2016-12-14 90 views
0

我遇到了使用angular2和typescript加载nativescript应用程序的问题。我试图解决很长时间。我所拥有的是:nativescript和angular2 - 无提供程序错误

list.service.ts

import { ItemListApi } from '../sdk/services/custom/ItemList'; 
import { ItemList } from '../sdk/models/ItemList'; 

@Injectable() 
export class ListService { 
items: Observable<Array<Item>>; 
public grocery: Grocery = new Grocery('', ''); 
private listModel: ItemList = new ItemList(); 

constructor(private itemListApi: ItemListApi, 
    private authModelApi: AuthModelApi, 
    private loginCredentials: LoginCredentials) { 

} 

addItems(list: ItemList) { 
    let uid; 
     uid = this.loginCredentials.getUserId(); 
     return this.itemListApi.create({ 
     "name": list.name, 
     "userid": uid 
    }); 
}; 
} 

module.ts

@NgModule({ 
imports: [ 
CommonModule, 
FormsModule, 
RouterModule 
], 
declarations: [ 
LoginComponent, 
ListComponent 
], 
providers: [ 
LoginService, 
ListService, 
LoginCredentials, 
HeroActions, 
HeroService 
], 
exports: [ 
LoginComponent, 
ListComponent 
] 
}) 

我收到错误消息说 “不提供商ItemListApi” 的所有时间... 其实ItemListApi来自我的loopback nativescript sdk。 有人可以帮我发现我的代码的小问题?

+0

你应该提供的服务为一个rpvoider在它使用的组件。例如https://github.com/NativeScript/nativescript-sdk-examples-ng/blob/master/app/http/http-get/http-get.component .ts –

回答

1

添加ItemListApi到您app.module.ts的供应商名单:

providers: [ 
LoginService, 
ListService, 
LoginCredentials, 
HeroActions, 
HeroService, 
ItemListApi 
], 

在回答什么尼克说,他不能将其添加为TS文件,他是在一个供应商,因为他是用@Injectable@Component

+0

实际上是这个模块。 ts是共享文件,这是Web,桌面和nativescript应用程序常见的文件。所以无论我在这个文件中做出的chages都会在app.i中反映出来,我有2个sdk一个用于web,一个用于nativecsript。这个nativescript sdk ItemListApi得到这个错误。所以我该怎么做? – Khushi

+0

好的添加'ItemListApi'应该可以解决你的问题,所以我不确定 – mast3rd3mon

0

正如评论中所述;您需要在module.ts文件中更新导入。

地址:

import { SDKBrowserModule } from './shared/sdk/index'; 

与您module.ts其他进口,然后又:

SDKBrowserModule.forRoot() 
在module.ts您的进口阵列