承诺拒绝:未定义FooService

时间:2016-11-23 02:09:47

标签: angular

我甚至不使用FooService,但Angular 2想抱怨。

export class DisplayFooComponent implements OnInit {

private foo: Foo;

constructor() {}

ngOnInit() {
// this.getFoo();
this.foo.name = "Bar Test";
} 

// getFoo() : void {
//   this.fooService.getFoo()
//     .then(foo => this.foo = foo);
// }
}

我追了几个小时。引用该服务的所有内容都已消失,但它仍然抱怨它没有定义,也不会在页面上显示任何内容(因为Angular 2出错了)

但是,如果我这样做:

export class DisplayFooComponent implements OnInit {

private foo: Foo;

constructor(private fooService:FooService) {}

ngOnInit() {
this.getFoo();
//this.foo.name = "Bar Test";
} 

 getFoo() : void {
   this.fooService.getFoo()
     .then(foo => this.foo = foo);
 }
}

我仍然收到服务未定义的错误,但它使用我的服务,进行http调用并仍然获取Foo。

我想我在这里错过了一些非常简单的东西。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您在提供商中插入FooService:[]?

为例:

@Component({
    providers: [FooService],
    templateUrl: './youTemplate.html'

})

您还必须导入文件:

import {FooService}  from 'youPath/fooService';

您还应该在模块中导入:

import {FooService}  from 'youPath/fooService';

@NgModule({
  imports: [ .... ],
  declarations: [ .... ],
  providers:[ FooService ]
})

答案 1 :(得分:0)

从angular-cli 1.0.0-beta.20.5升级到1.0.0-beta.21似乎已经修复了它。现在表现得像预期的那样。