Вызвать службу из @NgModule

#angular #module

#angular #модуль

Вопрос:

Я хочу вызвать службу, импортированную в мой @NgModule, из компонента входа в систему. Это то, что я сделал, но это не работает. Я только начал работать над окончательной версией A2.

 export class Login implements OnInit{
  constructor(
    private _service: Service
    ) {
  }
  ngOnInit() {
    this._service.login(value)
        .subscribe(x => console.log(x));
    }
  }
}
  

Мой @NgModule

 import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { LoginService } from '../service/login.service'; 

import { Login } from './login.component';

export const routes = [
  { path: '', component: Login, pathMatch: 'full' }
];

@NgModule({
  declarations: [
    Login
  ],
  imports: [
    CommonModule,
    RouterModule.forChild(routes)
  ],
  providers: [LoginService]
})
export default class LoginModule {
  static routes = routes;
}
  

Есть идеи?

Комментарии:

1. Подсказка из руководства по стилю: «Избегайте префикса к частным свойствам и методам с подчеркиванием». angular.io/guide/styleguide#style-03-04

Ответ №1:

Внутри конструктора Service должно быть LoginService так, как вы хотели получить доступ / создать экземпляр LoginService . Также убедитесь, что LoginService был импортирован.

 constructor(
   private _service: LoginService //<-- changed dependency type name
   ) {
}
  

Комментарии:

1. Я получаю это: Ошибка: не удается разрешить все параметры для входа в систему: (маршрутизатор, ?).

2. @AdrienCastagliola у тебя есть router-outlet директива на странице ..?

Ответ №2:

Измените класс компонента для использования LoginService

 export class Login implements OnInit{
  constructor(
    private _service: LoginService
    ) {
  }
  ngOnInit() {
    this._service.login(value)
        .subscribe(x => console.log(x));
    }
  }
}
  

Ответ №3:

Вы также должны импортировать LoginService в компонент Login и добавить его в конструктор как:

 constructor( _service: LoginService) {  }