【问题标题】:Call a service from @ngModule从@ngModule 调用服务
【发布时间】:2017-03-06 01:15:27
【问题描述】:

我想从登录组件调用在我的@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;
}

有什么想法吗?

【问题讨论】:

标签: angular module


【解决方案1】:

您还必须在 Login 组件中导入 LoginService 并将其添加到构造函数中:

constructor( _service: LoginService) {  }

【讨论】:

    【解决方案2】:

    更改您的组件类以使用LoginService

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

    【讨论】:

      【解决方案3】:

      内部构造函数Service 应该是LoginService,因为您想访问/创建LoginService 的实例。还要确保LoginService 已被导入。

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

      【讨论】:

      • 我明白了:错误:无法解析登录的所有参数:(路由器,?)。
      • @AdrienCastagliola 你在页面上有router-outlet 指令吗?
      猜你喜欢
      • 2017-05-03
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多