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

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

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

  1. // Router
  2. export const AppRoutes : RouterConfig = [
  3. {
  4. path: 'my/:arg/view',component: MyComponent
  5. }
  6. ]

然后我有这个组件:

  1. // Component
  2. export class MyComponent {
  3. constructor(private route : ActivatedRoute,private r : Router) {
  4. let id = parseInt(this.route.params['value'].id);
  5. console.log(id);
  6. // do stuff with id
  7. }
  8.  
  9. reloadWithNewId(id:number) {
  10. this.r.navigateByUrl('my/' + id + '/view');
  11. }
  12. }

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

不需要重新加载组件.只需更新模型,视图就会自动更新:
  1. export class MyComponent {
  2. constructor(private route : ActivatedRoute,private r : Router) {}
  3.  
  4. reloadWithNewId(id:number) {
  5. this.r.navigateByUrl('my/' + id + '/view');
  6. }
  7.  
  8. ngOnInit() {
  9. this.sub = this.route.params.subscribe(params => {
  10. this.paramsChanged(params['id']);
  11. });
  12. }
  13.  
  14. paramsChanged(id) {
  15. console.log(id);
  16. // do stuff with id
  17.  
  18. }
  19. }

猜你在找的Angularjs相关文章