我正在使用 ngrx / router 。
当我打开http://localhost/set-new-password/abc
时,RouteParams
效果很好。我可以得到我想要的字符串token
。
const landingRouter: Routes = [
{ path: '/set-new-password/:token', component: SetNewPasswordComponent },
];
export class SetNewPasswordComponent implements OnInit {
token: string = '';
constructor(private _routeParams$: RouteParams) {}
ngOnInit()
{
this._routeParams$
.pluck('token')
.subscribe(token => {
console.log(typeof token); // Console: "string"
console.log(token); // Console: "abc"
this.token = token; // Terminal: Type '{}' is not assignable to type 'string'.
});
}
}
但是,我在终端上收到了这个警告:
输入' {}'不能指定为' string'。
我知道我可以使用this.token = String(token);
来摆脱它。
但为什么这个警告会显示出来?有人可以为我解释一下吗?感谢
答案 0 :(得分:5)
从@brandonroberts获取帮助@ MikeRyan52的原始答案,谢谢!
这不起作用的两个原因:
- 由于字符串选择器,
我们实际上并不知道params对象的形状直到运行时, 所以没有一个好的类型来描述它
- 醇>
pluck('id')无法正常输入 不知道
解决方法是显式输入pluck():
params$.pluck<string>('id')
所以我的情况正在转变为:
this._routeParams$
.pluck<string>('token')
.subscribe(token => this.token = token);