【发布时间】:2016-08-17 01:23:24
【问题描述】:
在 Angular 2 中,我有一个 MyObjectComponent,它显示了一个 myObjects 数组。我从由@CanActivate 调用的MyObjectService 得到这个myObjects。
@CanActivate((next: ComponentInstruction, previous: ComponentInstruction) => {
let myObjectService: MyObjectService = //get my ObjectService here....
return new Promise((resolve) => {
myObjectService.getMyObjects()
.subscribe((myObjects) => {
next.params['myObjects'] = myObjects;
resolve(true);
});
})
在我的组件中,我通过
获取数据routerOnActivate(next) {
this.myComponentObjectVariable = next.params.myObjects;
}
这有效,但前提是我添加到 next.params['myObjects'] 的 myObjects 是一个字符串。
如果我添加一个对象,我会得到一个
Typescript 错误:TS2322:类型“any[]”不可分配给类型“string”。
但是,生成的 JavaScript 按预期工作。但我想摆脱 Typescript 错误消息。
错误是因为ComponentInstruction中定义了params对象:
declare class ComponentInstruction {
... some other data ...
params: {
[key: string]: string;
};
}
当然,我可以更改课程ComponentInstruction,但这有点难看。
有没有人知道如何摆脱这个错误信息?
【问题讨论】:
标签: typescript angular