Как звонить из ngOnInit() снова в angular2
объясните, пожалуйста, в этом коде
Как снова вызвать ngOnInit (), когда я вызываю другой метод
ngOnInit(): void {
this.route.params.subscribe((params: Params) => {
this.model=this.userData;
});
}
update() {
this.loading = true;
this.userService.update(this.model)
.subscribe(
data => {
alert ('Update successful');
},
error => {
alert ('Not updated');
this.loading = false;
});
this.user_data();
}
4 ответов
есть два варианта с моей точки зрения:
вызов ngOnInit () из другой области функций. Но я бы предложил не принимать этот подход дал
ngOnInit
является методом углового ядра, который принадлежит интерфейсу OnInit.
public ngOnInit() {
this.route.params.subscribe((params: Params) => {
this.model=this.userData;
});
}
update() {
this.ngOnInit();
}
Разбейте свою функциональность на другую функцию, используйте
ngOnInit
вызвать его и, после этого, любой запрос можно сделать от везде путем вызывать функцию в следующим образом:this.<MethodName>();
.
public ngOnInit() {
this.getRouteData();
}
update() {
this.getRouteData();
}
getRouteData() {
this.route.params.subscribe((params: Params) => {
this.model=this.userData;
});
}
Это просто функция ...
ngOnInit() {}
secondMethod() { this.ngOnInit(); }
Я делал это все время, чтобы перезагрузить мои данные, никогда не было проблем с этим.
ngOnInit
вызывается после создания компонента. таким образом, вы можете создать функцию и вызвать ее снова. Вот пример кода.
ngOnInit(): void {
this.callFun();
}
update() {
this.callFun();
// do code
}
private callFun(){
// do code
}
вам не нужно снова вызывать ngOnInit. Поэтому остается вопрос: Чего вы на самом деле пытаетесь достичь? У вас возникли проблемы с получением параметра маршрутизации?
ngOnInit(): void {
this.route.params.subscribe((params: Params) => {
this.model=this.userData;
});
ваш код в пределах подписаться выше будет автоматически повторное выполнение при каждом изменении параметров маршрута. Таким образом, нет необходимости вручную вызывать ngOnInit снова.