路线在Angular组件中没有解析器时的处理

时间:2018-08-16 02:31:11

标签: angular typescript angular-routing angular-router

我有一个用于创建新内容和更新内容的详细信息组件。我在“ edit /:id”路线上使用了解析器。我不在“新”路线上使用解析器。

  ngOnInit() {
    if (!(this.route.snapshot.url[0].path === '/new')) {
      this.route.data
      .subscribe((data: { project: Project}) => {
        this.project= data.project;
      });
    }
  }

这是我能够获得的网址。一个似乎是完整的路径,另一个似乎只是路径的最后一部分。

this.route.snapshot.url[0].path
// Ends up being: 'new'

this.router.url
// Ends up being '/admin/projects/new'

我正在尝试确定是否有更好的技术来确定何时加载解析器数据以及何时不加载解析器数据。我是否使用网址朝着正确的方向前进?如果是这样,您会推荐哪个url变量?

1 个答案:

答案 0 :(得分:1)

您可以使用路线数据来确定是要添加新项目还是要编辑现有项目。

在您的路由器中:

{path: 'admin/projects/:id', component: YourComponent, data: {type: 'edit'}},

在您的组件中:

ngOnInit(): void {
    if (this.route.snapshot.data['type'] === 'edit') {
        this.route.data.subscribe((data: { project: Project}) => {
            this.project = data.project;
        });
    }
}

我不能说这种方法比使用URL识别它是否为编辑更好,但是您可以根据需要使用它。