2017-07-06 8 views
5

proszę wyjaśnić w tym kodzie,Jak wywołać ngOnInit() ponownie w angular2

Jak wywołać ngOnInit() ponownie, gdy zadzwonię Inną metodą

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(); 
    } 
+5

Jaki jest cel? Po prostu przenieś kod do innej metody i wywołaj tę metodę z 'ngOnInit()'. 'ngOnInit()' jest wywoływane raz dla każdej metody. Nie ma sposobu, aby było to wywoływane wiele razy. –

+0

proszę wyjaśnić mi zaktualizowany kod – Krunal

Odpowiedz

8

Zobacz możesz zrobić dwie rzeczy z kodem

nazywając ngOnInit(), ale powiedziałbym do not prefer ten sposób jako ngOnInit jest kanciasty funkcja domyślna i wywołać przez kątowej 2 na Init ..

public ngOnInit() { 
     this.route.params.subscribe((params: Params) => { 
     this.model=this.userData; 
    });  
} 

update() { 
     this.ngOnInit(); 
} 

wywołanie innej funkcji z ngOnInit funkcję, która będzie przetwarzać dla was nd można zadzwonić z dowolnego miejsca wewnątrz klasy tylko przez this.<FunctionName>(); które bym może prefer to use .. ty

public ngOnInit() { 
     this.getRouteData(); 
} 

update() { 
     this.getRouteData(); 
} 

getRouteData() 
    this.route.params.subscribe((params: Params) => { 
     this.model=this.userData; 
    }); 
}  
1

ngOnInit wywoływana raz składnik jest tworzony. abyś mógł utworzyć funkcję i ponownie wywołać funkcję. Oto przykładowy kod.

ngOnInit(): void { 
    this.callFun(); 
}  

update() { 
    this.callFun(); 
    // do code 
} 

private callFun(){ 
    // do code 
} 
1

Nie trzeba ponownie wywoływać polecenia ngOnInit. Pozostaje pytanie, co tak naprawdę chcesz osiągnąć? Czy masz problemy z pobieraniem parametru routingu?

ngOnInit(): void { 
     this.route.params.subscribe((params: Params) => { 
     this.model=this.userData; 
    }); 

Kod obrębie subskrybować powyżej będzie AUTOMATYCZNIE być ponownie wykonywane za każdym razem zmieniać parametry trasy. Nie ma potrzeby ponownego ręcznego wywoływania ngOnInit.

1

To tylko funkcja ...

ngOnInit() {} 

secondMethod() { this.ngOnInit(); } 

Robiłem to przez cały czas, aby przeładować moich danych, nigdy nie miałem z nim problemu.

Powiązane problemy