2016-03-31 19 views
1

私のアプリでいくつかのファイルをブートストラップする際に問題があります。 Ionic2のタブの上にビルドする例。依存性注入角2 - イオン2&タイスクリプト

私はServiceファイルとUserファイルを持っています。これらはそれぞれ@injectableで装飾されています。私はアプリ全体に1つのインスタンスが欲しいので、私はそれをブートストラップしようとしています。 Platformにプロバイダを追加しました。アプリ全体またはコンポーネントごとに1つのインスタンスが必要かどうかはわかりません。

import {App, Platform} from 'ionic-angular'; 
import {bootstrap} from 'angular2/platform/browser'; 
import {TabsPage} from './pages/tabs/tabs'; 
import {User} from './User.ts'; 
import {Service} from './Service.ts'; 
import {Type} from 'angular2/core'; 

@App({ 
    template: '<ion-nav [root]="rootPage"></ion-nav>', 
    providers: [Platform] 
}) 
export class MyApp { 

    rootPage: Type = TabsPage; 

    constructor(platform: Platform, user: User) { 

     platform.ready().then(() => { 
      user.start(); 
     }); 

    } 
} 

bootstrap(MyApp, [ 
    Service, 
    User 
]); 

私はコンソールで2つのエラー

Cannot resolve all parameters for 'Platform'(?). Make sure that all the parameters are decorated with Inject or have valid type annotations and that 'Platform' is decorated with Injectable.

、その後

Uncaught TypeError: Cannot read property 'getOptional' of undefined

例えば私のサービスを受けるには、この

import {Injectable} from 'angular2/core'; 

@Injectable() 
export class Service { 
    // 
} 

答えて

1

How to pass parameters for dependency while Injecting services in services in Angular 2 (Ionic 2/Angular 2/Typescript)

のように見えます

この投稿は、@Appがこのアプリケーションをブートストラップするイオンデコレータであることを示しています。ユーザーとサービスをプロバイダに追加して、すべてが機能しているようです。プラットフォームをプロバイダに追加する必要はありません。

@App({ 
    template: '<ion-nav [root]="rootPage"></ion-nav>', 
    providers: [User, Service] 
}) 
0

あなたのコンポーネントのプロバイダにPlatformを指定する必要はありません。

//import {User} from './User.ts'; 
//import {Service} from './Service.ts'; 
import {User} from './User'; 
import {Service} from './Service'; 

@App({ 
    template: '<ion-nav [root]="rootPage"></ion-nav>' 
    providers: [Platform] // <------ 
}) 
export class MyApp { 

    rootPage: Type = TabsPage; 

    constructor(platform: Platform, user: User) { 
    (...) 
    } 
} 

また、私はあなたの輸入に.ts拡張を必要とすることはないと思います

あなたのプロジェクトにTypeScriptまたはES6はありますか?

+0

全文を入力してください。私は今、プロバイダからプラットフォームを削除し、ブートストラップではなく、ユーザとサービスを追加しました。 – user195257

+0

わかりました。あなたはまだエラーがありますか? –

+0

いいえ、間違いはありません:) – user195257

関連する問題