Ich habe einen Winkel 2 Controller bekam, die wie folgt aussieht:Angular 2: Wie erkenne ich Attributänderungen an Eingabeattributen einer Komponente?
@Component({
selector: 'my-component',
template: '<div>The value is: {{ value }}</div>',
})
class MyComponent implements OnInit {
@Input()
value: string;
@Output
valueChange = new EventEmitter<number>();
ngOnInit() {
this.valueChange.subscribe(value => {
console.log('new value:', value); // <-- does not get triggered
});
}
}
Aber wenn der Wert von value
Änderungen aus einer Vorlage Bindung:
<my-component [value]="someValue" /> <!-- valueChange not triggered! -->
Das valueChange
Ereignis ausgelöst wird nicht so, Obwohl die Vorlage korrekt aktualisiert wird und den neuen Wert anzeigt, weiß die Komponente nicht, dass sie geändert wurde.
Wie kann ich feststellen, wenn die Eingabe-Attribute auf meinem Controller geändert werden?
Sie können die Eigenschaft inputs für den \ @Component-Decorator * oder * verwenden. Sie können den \ @Input-Decorator für die Eigenschaft set verwenden. Sie beide arbeiten derzeit, und der \ @Input-Dekorator scheint der aktuelle bevorzugte Weg zu sein –
Ein get Accessor sollte und kann keinen Wert haben, möchten Sie möglicherweise Ihre get-Methode zu erhalten 'Wert() {} ' Ich denke, zu aktualisieren Ihr '@ output' muss möglicherweise auch auf' @Output() 'aktualisiert werden –