2016-03-31 4 views
1

У меня возникли проблемы с загрузкой некоторых файлов в моем приложении. Наверху примера вкладки Ionic2.Зависимость впрыска в угловом 2 - Ionic2 & typescript

У меня есть Сервис и файл пользователя, каждый из которых украшен @injectable. Я хочу 1 экземпляр для всего приложения, поэтому я пытаюсь загрузить его. Я добавил платформу поставщикам, я не уверен, нужен ли мне 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 в поставщик компонента:

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

    rootPage: Type = TabsPage; 

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

Кроме того, я не думаю, что вам нужно .ts расширения в ваш импорт:

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

Вы используете TypeScript или ES6 в своем проекте?

+0

Машинопись на всем протяжении. Теперь я удалил платформу у поставщиков и добавил к ней пользователя и сервис, а не загружал их. – user195257

+0

Хорошо. У вас все еще есть ошибка? –

+0

Нет, теперь ошибок нет :) – user195257

Смежные вопросы