我有一个Ionic页面,我正在尝试将一个对象数组传递给我的Modal页面:
export class SelectAddress{
constructor(
public id : string,
public number : string,
public line1 : string,
public postcode: string
){}
}
我试图通过Ionic页面上的以下代码执行此操作:
let modal = this.modalControl.create(SelectAddressPage, {addresses: this.addressResult as Array<SelectAddress>});
modal.present();
在Modal上,我试图使用以下代码检索数据:
constructor(
public platform: Platform,
public params: NavParams,
public viewCtrl: ViewController){
this.addresses = params.get('addresses') as Array<SelectAddress>;
随后在尝试循环结果时,我收到一条错误消息:
未捕获(承诺):错误:找不到不同的支持对象 '对象'类型的'[object Object]'。 NgFor仅支持绑定 像阵列这样的Iterables。错误:找不到不同的支持 对象'[object Object]'的类型为'object'。 NgFor仅支持绑定 对于像阵列这样的Iterables。
似乎我可以愉快地发送原始数据类型,如整数和字符串,但任何更复杂的东西似乎都不适用于此。
最初,在我的ModalControl上,我试图在我的AddressService中注入以检索数据,但是当我尝试这个时,依赖注入器无法注入依赖项。
我应该尝试通过navParams发送复杂类型还是我应该尝试别的东西?
答案 0 :(得分:1)
我认为您的问题是您尝试使用打字稿class
进行类型断言。要通过旧类型断言(let x = <Type> getX();
)或较新的as
运算符(let x = getX() as Type
)确保变量属于某种类型,您需要定义interface
或{ {1}}:
type
一般来说,Typescript类型是一个编译时构造,并且在运行时不存在,所以当你运行你的应用程序时,你实际上总是传递一个javascript原语类型。
答案 1 :(得分:0)
我得到的错误仅仅是因为我试图转换的类型不匹配,因为我引用了错误的变量。
这就是我的意思:
let modal = this.modalControl.create(SelectAddressPage, {addresses: this.addressResult.addresses as Array<SelectAddress>});
此。 addressResult 。地址,而非此。 addressResult
我很傻。