我在应用程序中引导某些文件时遇到了一些问题。建立在Ionic2标签示例之上。
我有一个服务和一个用户文件,每个文件都用@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个错误
无法解析“平台”(?)的所有参数。确保所有 参数用Inject修饰或具有有效类型 注释和'平台'用Injectable修饰。
然后
未捕获的TypeError:无法读取未定义的属性“getOptional”
我的服务例如,看起来像这样
import {Injectable} from 'angular2/core';
@Injectable()
export class Service {
//
}
答案 0 :(得分:1)
这篇文章表明@App是一个离子装饰器,可以引导应用程序。我向提供商添加了用户和服务,所有这些似乎都在运行。平台不需要添加到提供者。
when(bitReader.read(anyInt())).thenAnswer(...)
答案 1 :(得分: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?