Что такое угловой 2 эквивалент $scope.watch
?
Я использую $scope.watch
для наблюдения за изменениями объектов из внешней службы, которые используются в моем контроллере.
Я знаю, что $scope
больше не применяется, но как настроить функцию часов?
Что такое угловой 2 эквивалент $scope.watch
?
Я использую $scope.watch
для наблюдения за изменениями объектов из внешней службы, которые используются в моем контроллере.
Я знаю, что $scope
больше не применяется, но как настроить функцию часов?
Вы можете использовать метод ngOnChanges
, чтобы получать уведомления, если какие-либо привязки изменились:
@Component({
selector: 'my-cmp',
template: `<p>myProp = {{myProp}}</p>`
})
class MyComponent implements OnChanges {
@Input() myProp: any;
ngOnChanges(changes: {[propName: string]: SimpleChange}) {
console.log('ngOnChanges - myProp = ' +
changes['myProp'].currentValue);
}
}
Но это зависит от вашего случая использования, так как вы можете также рычаги (например) форма управления, чтобы получать уведомления, а также:
@Component({
selector: 'four',
directives: [MyDirective],
template: `
Hello, this is working! <br>
<textarea mydir [(ngModel)]="pp.status" [ngFormControl]="myCtrl">
</textarea>
`,
})
export class Four {
@Input() pp;
constructor() {
this.myCtrl = new Control();
this.myCtrl.valueChanges.subscribe(
(data) => {
console.log('Model change');
});
}
}
вы также можете использовать пользовательские EventEmitter
вы можете подписаться в службах уведомлять вне компонента.
Для этого вы можете использовать функцию rx.js Observable.of(something)
.
import {Observable} from "rxjs/Rx";
class Example {
public test;
public watchTest;
constructor(){
this.setWatch()
this.seeWatch()
}
setWatch() {
this.watchTest = Observable.of(this.test);
}
seeWatch() {
this.watchTest.subscribe(data => {
data //this.test value
}
}
}
благодарит за ответ. Я пробовал ваш подход, и это не сработало. Я отправил код, который использовал в своем ответе выше. Не могли бы вы сообщить мне, что я делаю неправильно? – nearpoint
Добро пожаловать! Где код, который вы опубликовали? Я не вижу этого ... –