Я думаю, что если вы что-то меняете в пользовательском интерфейсе / состоянии, то будет вызываться ngOnChanges
.
ngOnChanges()
(OnChanges)
вызывается, когда значение, привязанное к вводу, изменилось, так что вы можете запустить пользовательский код при изменении ввода.
ngDoCheck()
(DoCheck)
вызывается при запуске обнаружения изменений, чтобы вы могли реализовать свое собственное действие по обнаружению изменений.
ngOnChanges(changes: SimpleChanges) {
// changes.prop contains the old and the new value...
console.log('on change', changes)
}
Если вы обрабатываете ответ HTTP и вы хотите наблюдать это, затем используйте BehaviorSubject
.
Пожалуйста, проверьте следующий пример,
Служба для вызова API - TestService
private test = new BehaviorSubject<any>(null);
getTest() {
// ...
return this.http.get(_url, options)
.map(response => {
const responseAsObject = response.json();
this.test.next(responseAsObject); // change the value!
});
}
В вашем компоненте
export class TestComponent implements OnInit{
private testObj : any;
constructor(
private testService: TestService,
) {}
ngOnInit() {
this.testService.getTest
.subscribe(test => {
// here is the test object from the service, you can do whatever you want with it
// it fires when you get the updated response
});
}
}
Надеюсь, это поможет вам.