2017-07-06 41 views
5

xin giải thích trong mã này,Làm thế nào để gọi ngOnInit() một lần nữa trong angular2

Làm thế nào để gọi ngOnInit() một lần nữa khi tôi gọi phương pháp khác

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

mục đích là gì? Chỉ cần di chuyển mã sang phương thức khác và gọi phương thức đó từ 'ngOnInit()'. 'ngOnInit()' được gọi một lần cho mọi phương thức. Không có cách nào để làm cho nó được gọi nhiều lần. –

+0

hãy giải thích cho tôi về mã được cập nhật – Krunal

Trả lời

8

Xem bạn có thể làm hai điều với mã của bạn

gọi ngOnInit() nhưng tôi sẽ nói do not prefer cách này như ngOnInit là góc chức năng mặc định và nó kích hoạt bởi góc 2 trên Init ..

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

update() { 
     this.ngOnInit(); 
} 

gọi hàm khác từ ngOnInit các chức năng mà sẽ xử lý cho bạn một thứ bạn có thể gọi nó từ bất cứ nơi nào bên trong lớp chỉ bằng cách this.<FunctionName>(); mà tôi sẽ bạn có thể prefer to use ..

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

update() { 
     this.getRouteData(); 
} 

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

ngOnInit gọi là một lần các thành phần được tạo ra. để bạn có thể tạo một hàm và gọi lại hàm. Đây là mã mẫu.

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

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

private callFun(){ 
    // do code 
} 
1

Bạn không cần phải gọi lại ngOnInit. Vì vậy, câu hỏi vẫn còn, những gì bạn đang thực sự cố gắng để thực hiện? Bạn có gặp sự cố khi truy xuất tham số định tuyến không?

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

Mã của bạn trong phạm vi đăng ký trên sẽ TỰ ĐỘNG được tái thực hiện mỗi khi các thông số tuyến đường thay đổi. Vì vậy, không cần phải tự gọi lại ngOnInit nữa.

1

Nó chỉ là một chức năng ...

ngOnInit() {} 

secondMethod() { this.ngOnInit(); } 

Tôi đã làm tất cả thời gian để tải lại dữ liệu của tôi, chưa bao giờ có một vấn đề với nó.

Các vấn đề liên quan