如何在组件中使用服务?

时间:2019-03-29 15:59:13

标签: angular typescript service injectable

当我注入UserService时,它没有出现 当我从组件中删除服务时,组件可以正常工作

@NgModule中的提供者

providers: [
    UserService,
    {
      provide:AuthServiceConfig,
      useFactory: getAuthServiceConfigs
    }
  ],

服务代码

@Injectable()
export class UserService {
    API_URL = environment.apiUrl;

    constructor(private http: HttpClient) { }

    getAll() {
        return this.http.get<User[]>(this.API_URL+"getAllUsers");
    }
}

组件代码

export class UserRegistrationComponent implements OnInit {

  registerForm: FormGroup;
  submitted = false;
  newUser;
  userService: UserService;
   constructor(
        userService: UserService        
        ) 
       {
        config.backdrop = 'static';
        config.keyboard = false;
        this.userService=userService;
       }

  ngOnInit() {
      this.registerForm = this.formBuilder.group({
          emailId: ['', Validators.required],
          firstName: ['', Validators.required],
          lastName: ['', Validators.required],
          password: ['', [Validators.required, Validators.minLength(8)]]
      });
  }
}

2 个答案:

答案 0 :(得分:0)

export class UserRegistrationComponent implements OnInit {

  registerForm: FormGroup;
  submitted = false;
  newUser;
  // userService: UserService; remove this line
   constructor(
        userService: UserService        
        ) 
       {
        config.backdrop = 'static';
        config.keyboard = false;
       // this.userService=userService; remove this line
       }

  ngOnInit() {
      this.registerForm = this.formBuilder.group({
          emailId: ['', Validators.required],
          firstName: ['', Validators.required],
          lastName: ['', Validators.required],
          password: ['', [Validators.required, Validators.minLength(8)]]
      });
  }
}

如果您删除注释行然后尝试,它应该可以工作。 当您在构造函数中具有参数时,它将自动为该类创建一个变量,因此您可以像使用它一样 this.userService.getAll()

答案 1 :(得分:0)

您可以像这样在构造函数中获得服务实例:

constructor(private userService: UserService){}

然后您可以像这样使用它:

this.userService.getAll()