Angular 4可以激活孩子

问题描述 投票:1回答:1

所以我有一个父组件,其中嵌套了路由器

<parent>
    <router-outlet></router-outlet>
</parent>   

创建父级时,会调用服务器获取大型JSON对象,只需将其称为人体。然后当用户点击父组件中的链接时,他们将浏览子路由器的组件,其中有一个arm组件,leg组件......即(试图分解用于操作的主体数据的组件)。父母和孩子正在通过双向服务进行交流。

我如何保护网址,以便用户不能只在浏览器网址标签中转到父/组件,他们只能通过遵守应用程序流来访问子组件。我调查过可以激活孩子,但似乎只是为了服务。我可以在parent.component.ts中设置canActivateChild条件吗?

angular angular-routing angular4-router
1个回答
1
投票

由于您的父组件和子组件都依赖于共享服务的数据,因此无论首先访问哪条路由,都可以确保数据存在,方法是将服务更改为以下内容:

import { HttpClient } from "app/http-client";
import { Injectable } from "@angular/core";
import { Observable } from "rxjs/Rx";

@Injectable()
export class ParentService {
    data: any;


    constructor(private http: HttpClient) {
         this.getData()
             .subscribe(data => this.data = data);
    }

    getData() {
        return this.http.get(`url`)
                        .map(res => res.json());
    }


}

并且无论是在应用程序启动还是以后,只要注入此服务的组件,就会加载数据。

© www.soinside.com 2019 - 2024. All rights reserved.