我在 Angular 2/4 和获取特定路线的参数时遇到问题。我这样做了数百次,但从未遇到过这样的问题,正如您从我在路线上调用 paramMap 的代码中看到的那样,预计它只会运行一次,但不知何故它最终被调用两次。
这就像 paramMap observable 发出相同的值两次而不是一次。问题是,通过这种方式,我向服务器发出两个请求,发送重复的数据。
export class UserComponent implements OnInit {
user: User;
submitted: Observable<Topic[]>;
constructor(
private router: Router,
private route: ActivatedRoute,
private service: UserService,
private topicService: TopicService
) {}
ngOnInit(): void {
this.route.data
.subscribe(res => this.user = res.user);
// Error is handled by resolver
this.submitted = this.route.paramMap
.switchMap((params: ParamMap) => {
// THIS ONE IS INVOKED TWICE WITH SAME PARAMS
return this.topicService
.getUserSubmitted(params.get("name"));
});
}
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
我使用解析器获取用户,同时根据路由参数(:名称)获取数据(主题),实际上就是这样,仅此而已。