Как звонить из 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 снова.