angular – 如何手动重新渲染组件?

前端之家收集整理的这篇文章主要介绍了angular – 如何手动重新渲染组件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Angular2的新手,我已经习惯了Angular 1摘要周期,这意味着如果我更新视图的范围,我可以通过调用$scope.$digest()来手动触发摘要.但是,我不确定如何在Angular2中执行此操作,因为新框架没有旧版本具有的隐式数据绑定.

这是我的问题.当有一个带参数的url时,我有一个加载组件的路由:

// Router
export const AppRoutes : RouterConfig = [
    {
    path: 'my/:arg/view',component: MyComponent  
    }
]

然后我有这个组件:

// Component
export class MyComponent {
    constructor(private route : ActivatedRoute,private r : Router) {
    let id = parseInt(this.route.params['value'].id);
    console.log(id);
    // do stuff with id
    }

    reloadWithNewId(id:number) {
        this.r.navigateByUrl('my/' + id + '/view');
    }
}

让我们说我导航到url / my / 1 / view.它将调用构造函数并记录数字1.但是,如果我使用新的id reloadWithNewIf(2)调用reloadWithNewId,则不会再次调用构造函数.如何手动重新加载组件?

不需要重新加载组件.只需更新模型,视图就会自动更新:
export class MyComponent {
    constructor(private route : ActivatedRoute,private r : Router) {}

    reloadWithNewId(id:number) {
        this.r.navigateByUrl('my/' + id + '/view');
    }

    ngOnInit() {
      this.sub = this.route.params.subscribe(params => {
         this.paramsChanged(params['id']);
       });
    }

    paramsChanged(id) {
      console.log(id);
      // do stuff with id

    }
}
原文链接:https://www.f2er.com/angularjs/143487.html

猜你在找的Angularjs相关文章