ค้นหาเว็บไซต์

angular - ใช้ input ในคลาสบน angular2 กับ typescript


ฉันกำลังพยายามใช้ input ที่ฉันส่งโดย appcomponent ไปยังคอมโพเนนต์ select ของฉัน

ฉันต้องใช้ค่าตัวนี้ในคลาสของฉัน ปัญหาคือมันยังไม่ได้ถูกระบุในคลาสของฉัน แต่เมื่อฉันใส่มันในเทมเพลต ฉันสามารถเห็นมันได้

ตัวอย่างเช่นในส่วนประกอบนี้:

import {Component, Input} from 'angular2/core';
@Component({
selector: 'test',
template: "<h4>test 1 {{test_input}}</h4>   <br>" 
})
export class TestComponent {
private test_test;

@Input() test_input: string;
}

ฉันจำเป็นต้องใช้ test_input เป็นตัวอย่างเพื่อแก้ไขมัน

คำตอบ #1

ค่าข้อมูลนำเข้าจะยังไม่ได้ถูกตั้งค่าก่อนที่ ngOnInit() จะถูกเรียก ย้ายโค้ดของคุณไปที่เมธอดนี้

export class TestComponent {
  private test_test;

  @Input() test_input: string;

  ngOnInit() {
    console.log(this.test_input);
  }
}

และมันจะทำในสิ่งที่คุณคาดหวัง

คำตอบ #2

ฉันต้องการใช้ test_input เป็นตัวอย่างเพื่อปรับแก้มัน

ถ้าคุณต้องการแก้ไขค่าทุกครั้งที่มีการเปลี่ยนค่าและส่งต่อไปยัง TestComponent ใช้ตัวตั้งค่า:

@Input() set test_input(newValue: string) { ... }

สิ่งนี้ถูกอภิปรายในคู่มือการโต้ตอบส่วนประกอบ ตัวอย่างการดักจับการเปลี่ยนแปลงคุณสมบัติอินพุตด้วยเซ็ตเตอร์