我已经使用承诺和可观察逻辑从服务器获取数据使用"get"。它一直工作到昨天。突然,它开始抛出上述错误。请帮我找出错误。我得到"泛型类型'承诺'需要1个类型参数"错误。
@Injectable()
export class myBlogService{
// Property to hold root server URL i.e host
private serverUrl:string = "app/data.json"
constructor(private http:Http) {}
// check function in service to check control is coming to service
check(){
alert("getting clicked from service");
}
// get function to get data from server
// basically blog datas
get(): Promise {
return this.http.get(this.serverUrl)
.map(response => response.json())
}
}
/**
*
* My Components
*
*/
@Component({
selector: 'my-app',
providers: [myBlogService],
styleUrls: ['app/css/app.css'],
template: `
<h1 (click)= check()>My First Angular 2 App</h1>
<button (click)=get()>Get My Name</button>
<h1>{{getResponse.name}}</h1>
`
})
export class myBlogApp {
// Property to hold blog data
public getResponse = {"name": "", "age": ""};
constructor(protected myblogservice:myBlogService){}
// check function to check control is going to service
check() {
this.myblogservice.check();
}
// get function calls service get function which return data from server
get(){
this.myblogservice.get().subscribe(data => {
this.getResponse = data;
});
}
}
/**
*
* NgModule Declaration
*
*/
@NgModule({
imports: [ BrowserModule, HttpModule ],
declarations: [ myBlogApp ],
providers: [ ],
bootstrap: [ myBlogApp ]
})
export class app{}
/**
*
* App engine entry point
*
*/
const platform = platformBrowserDynamic();
platform.bootstrapModule(app);
当给出"promise:"时,它仍然给出问题"错误TS2339:类型'Promise'上的属性'subscribe'不存在".
我尝试了不同的解决方案,但没有运气。
需要添加特定的类型。
如果它不包含任何数据并且纯粹用于解析/拒绝功能,则使用:
Promise<void>
最终这是一个与其他类型签名一样的类型签名,所以你可以使用:
Promise<any>
https://basarat.gitbooks.io/typescript/content/docs/promise.html 用Observable
代替Promise
,替换为:
get(): Promise {
return this.http.get(this.serverUrl)
.map(response => response.json())
}
get(): Observable<any> {
return this.http.get(this.serverUrl)
.map(response => response.json())
}