我正在使用带有打字稿的Ionic2制作通用CRUD服务。
我有这门课,但我省略了与问题无关的所有数据:
export class UsersPage {
users: User[];
constructor(public navCtrl: NavController, public navParams: NavParams,
private usersProvider: Users) {
super(navCtrl, navParams, usersProvider);
}
navigateToDetail(userId: number) {
this.navCtrl.push(ProfilePage, {userId})
}
}
我将它转换为这个泛型类,但是visual studio正在生成一个错误,我正在考虑将类型用作值
export class PageListBase<T extends IHasId, TDetailPage extends PageBase<T>> {
navigateToDetail(id: number) {
this.navCtrl.push(TDetailPage, {id})
}
}
我收到错误:
TDetailPage仅引用一种类型,但在此处用作值
如何将Type作为值传递给nave控制器?
答案 0 :(得分:0)
我通过将类型作为实例传递给基础来修复它,但我想对导入的实际内容进行一些澄清。
export class PageListBase<T extends IHasId> {
public entityList: T[];
constructor(public navCtrl: NavController, public navParams: NavParams, public baseProvider: ProviderBase<T>, public instance: any) {
baseProvider.getList().subscribe(entities => {
this.entityList = entities;
console.log(entities);
});
}
navigateToDetail(id: number) {
this.navCtrl.push(this.instance, { id })
}
}