angular的route中包含了很多的信息,我们可以拿来使用。
![](https://img.haomeiwen.com/i7430753/d615a8a52bed01d4.png)
![](https://img.haomeiwen.com/i7430753/20ff2ac385e44c7d.png)
我们来看下面的概念
什么是Subject?在RxJS中,Subject是一类特殊的Observable,它可以向多个Observer多路推送数值。普通的Observable并不具备多路推送的能力(每一个Observer都有自己独立的执行环境),而Subject可以共享一个执行环境。
BehaviorSubject 是Subject的一个衍生类,具有“最新的值”的概念。它总是保存最近向数据消费者发送的值,当一个Observer订阅后,它会即刻从 BehaviorSubject 收到“最新的值”。
所以BehaviorSubject其实就是一个Observable对象。
我们来看route里的BehaviorSubject。
给出URL:http://localhost:4200/solution/11967?name=qw#gate
1.data
执行this.route.data.subscribe(i => console.log(i));
{title: "Solution Edit"}
2.fragment
就是#后面的值,我们可以用来处理锚点的问题。
执行this.route.fragment.subscribe(i => console.log(i));
gate
锚点处理
private anchor: string;
ngOnInit() {
this.router.fragment.subscribe( i => {
this.anchor = i; // 找到锚点字符串
})
}
然后利用scrollToView即可。
3.params
执行this.route.params.subscribe(i => console.log(i));
{id: "11967"}
4.queryParams
执行this.route.queryParams.subscribe(i => console.log(i));
![](https://img.haomeiwen.com/i7430753/e1f841f26c174664.png)
5.url
执行this.route.url.subscribe(i => console.log(i));
{name: "qw", age: "12"}
网友评论