所以我有一个父组件,其中嵌套了路由器
<parent>
<router-outlet></router-outlet>
</parent>
创建父级时,会调用服务器获取大型JSON对象,只需将其称为人体。然后当用户点击父组件中的链接时,他们将浏览子路由器的组件,其中有一个arm组件,leg组件......即(试图分解用于操作的主体数据的组件)。父母和孩子正在通过双向服务进行交流。
我如何保护网址,以便用户不能只在浏览器网址标签中转到父/组件,他们只能通过遵守应用程序流来访问子组件。我调查过可以激活孩子,但似乎只是为了服务。我可以在parent.component.ts中设置canActivateChild条件吗?
由于您的父组件和子组件都依赖于共享服务的数据,因此无论首先访问哪条路由,都可以确保数据存在,方法是将服务更改为以下内容:
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());
}
}
并且无论是在应用程序启动还是以后,只要注入此服务的组件,就会加载数据。