2017-06-20 19 views
0

我正在做一个通用的CRUD服务使用Ionic2与打字稿。Ionic2手写体一般推送类型作为页面NavCtrl

我有这个类,但我省略了所有不相关的问题的数据:

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是生成我是一个错误attemting使用类型作为值

export class PageListBase<T extends IHasId, TDetailPage extends PageBase<T>> { 
    navigateToDetail(id: number) { 
     this.navCtrl.push(TDetailPage, {id}) 
    } 

} 

我收到一个错误:

TDetailPage only refers to a type but is being used as a value here

如何将Type作为值传递给nave控制器?

回答

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