在 Angular2 路由中使用 Resolve [英] Using Resolve In Angular2 Routes

查看:28
本文介绍了在 Angular2 路由中使用 Resolve的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 Angular 1 中,我的配置如下所示:

In Angular 1 my config looks like this:

$routeProvider
  .when("/news", {
    templateUrl: "newsView.html",
    controller: "newsController",
    resolve: {
        message: function(messageService){
            return messageService.getMessage();
    }
  }
})

如何在 Angular2 中使用解析?

How to use resolve in Angular2?

推荐答案

@AndréWerlang 的回答很好,但是如果你想让页面上解析的数据在路由参数改变时改变,你需要到:

@AndréWerlang's answer was good, but if you want the resolved data on the page to change when the route parameter changes, you need to:

解析器:

@Injectable()
export class MessageResolver implements Resolve<Message> {

  constructor(private messageService: MessageService, private router: Router) {}

  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Message> {
    const id = +route.params['id'];
    return this.messageService.getById(id);
  }
}

您的组件:

ngOnInit() {
  this.route.data.subscribe((data: { message: Message }) => {
    this.message = data.message;
  });
}

这篇关于在 Angular2 路由中使用 Resolve的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆