angular - 以 Angular 2 刷新组件

标签 angular

我对 Angular 2 还很陌生,想了解更多。

我的问题是:我们如何刷新组件(重新调用 ngOnInit)

此组件将调用 API 以从数据库中检索一些数据。如果单击按钮,PUT 请求将发送到 API 以更新数据库中的数据。 由于更改发生在数据库中而不是组件本身,我认为 ngOnChange 或其他更改检查方法不会起作用。在这里,我试图让 ngOnInit 再次被调用,以便组件可以接收更新的数据。

我已尝试使用 router nagivate 刷新此页面,但它不起作用。

所有 HTTP 方法都发生在另一个服务文件中,我不会在这里显示它们,因为它不相关。

应用程序模块.ts

@NgModule({
    imports: [
        RouterModule.forRoot([{path: 'data', component: DataComponent}]);
    ]
})

数据.组件.ts

@Component({
    template: `
        <button (click)= "onclick()">Click Me</button>
    `,
    ....
});

export class DataComponent implements OnInit{
    fetchData(): void{
        this.dataService.dataSessions().subscribe(
                data => this.data= data,
                error=> console.error(error),
                ()=> {}
        );
    }

     onclick(){
         this.dataChangeService.updateData().subscribe( response=> console.log(response));
         this.router.navigate['/data'];
     }

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

任何答案都将不胜感激,我总是很乐意了解更多信息。

最佳答案

一旦您对后端的调用得到解决,请尝试调用 this.fetchData() 方法。像这样的东西:

response=> { this.fetchData() ...

关于angular - 以 Angular 2 刷新组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41231557/

相关文章:

angular - 检测 @ViewChild() 中的值何时更改

javascript - 选择使用 Angular 2 显示所选值的对象

javascript - 尝试使用 tsickle/closure 编译 angular5 项目,我得到 "The body of a goog.module cannot reference this."

angular - 如何在 Angular Mat-Select 中动态禁用特定选项

Angular Material SVG 图标出现 404 错误

javascript - 是否可以在现有的纯 Javascript 项目中添加 Angular 组件?

html - 将绝对 div 放在相对 div 下

Node.js 服务器未收到来自 Angular 站点的上传请求(使用express-fileupload)

Angular Material 2 个选项卡滚动显示在导航上

angular - 如何改变 Angular 环境