Ionic2 Typescript通常将类型作为页面推送到NavCtrl

时间:2017-06-20 00:01:14

标签: javascript angular typescript generics ionic2

我正在使用带有打字稿的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控制器?

1 个答案:

答案 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 })
    }
}