Angular2,注射污染物



我这样做:

import {testInjection} from './ts/models';
import {bootstrap} from 'angular2/platform/browser'; 
bootstrap(AppComponent, [testInjection]).catch(err => console.error(err));

在型号.ts 中

let TEST:string = "test";
export var testInjection: Array<any>=[
    bind(TEST).toValue(TEST)
];

然后在AppComponent:中

class export AppComponent{
constructor(
 public http: Http,
    @Inject(TEST) TEST:string
    ){
  }
}

但得到此错误:错误TS2304:找不到名称"TEST"。有人能告诉我我做错了什么吗。

tnx

如果你做得不对,请制作一个服务

import { Injectable } from '@angular/core';
import { testInjection } from './models';
@Injectable()
export class TestService {
  getTestValue() {
    return testInjection;
  }
}

在您的AppComponent 中

import {TestService} from './test.service'
class export AppComponent{
constructor(
 public http: Http, _testService : TestService){
     console.log(_testService.getTestValue());
  }
}

在Angular2中,您只需要使用@Injedisele,它应该在服务中使用。在组件中,您只需要DI:)。希望它能帮助你

您正在尝试对代码使用模态,只是为了进行类型检查,如果您使用的是有问题的用法,则不需要使用@inject,

创建单个服务的更好方法是,您可以在其中检查类型、调用方法并执行任何您想要的操作,现在,如果您要创建一个服务,而不是必须提供至少一个装饰器,您可以使用@Component@Injectable。像这样-

import { Injectable } from './@angular/core';
@Injectable()
export class TestService {
  name:string =null;
  email:string =null;
 ...///
  constructor(){
   //do your stuff
  }
}

或者你也可以像这样使用

import { Component } from './@angular/core';
    @Component({
       selector: 'testService'
    })
    export class TestService {
      name:string =null;
      email:string =null;
     ...///
      constructor(){
       //do your stuff
      }
    }

PS:-有必要用至少一个装饰器来装饰类

现在,通过这样做,您已经成功地创建了一个类,现在,如果这个类在多个组件中使用,您可以在引导时注入它,如下所示-

bootstrap(AppComponent, [TestService]).catch(err => console.error(err));

现在,如果你在引导时注入服务,你不需要每次在提供者列表中都提供,因为angular会自动为每个组件创建这个服务的实例,

但是,如果你没有在引导时注入你的服务,那么你需要导入你的服务并且还需要在提供商列表中注入,那么你就可以这样使用它:-

import { Component } from './@angular/core';
import { TestService } from './TestService';    
    @Component({
       selector: 'testService',
       providers: [TestService]
    })
    export class AppComponent {
      constructor(private service : TestService){
        this.service.blabla   //now you are able to use your service here
      }
    }

希望这篇文章能澄清一些关于Angular2注射的问题。

相关内容

  • 没有找到相关文章

最新更新