【问题标题】:Angular 7 Service providedIn: 'root'Angular 7 服务提供在:'root'
【发布时间】:2019-05-31 13:17:21
【问题描述】:

我对角度开发很陌生,所以如果这是一个非常基本的问题,请原谅我

但是我有一个购物车服务,我现在只有一个简单的控制台日志功能

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class CartService {

  constructor( ) {}
  
  public addItem() {
    console.log('Hello');
  }
}

基本上我无法弄清楚如何在我已安装的 NG 模块中使用此服务,我已通过构造函数在其他组件中成功使用它,但 ngmodule 没有这个?

通过使用在 Angular 6 中添加的providedIn: 'root' 标记,我了解到它是应用程序模块级别的单例

但就是不知道如何调用 cartService.addItem()?

如果有人可以提供帮助,谢谢!

【问题讨论】:

    标签: javascript node.js angular typescript ecmascript-6


    【解决方案1】:

    你可以像这样使用依赖注入来调用服务

    export class AppComponent {
      constructor(private cartService: CartService) {
    
      }
    
      doSomething() {
         this.cartService.addItem();
      }
    }
    

    【讨论】:

      【解决方案2】:

      下面是如何在组件中使用服务的示例代码:

      组件.ts

      import { Component, OnInit} from '@angular/core';
      import { yourSeerviceName } from "PATH_TO_SERVICE";
      @Component({
          selector: 'app-dummy',
          styleUrls: ['dummy.component.sass'],
          templateUrl: 'dummy.component.html'
      })
      
      
      export class yourComponent implements OnInit {
          // you can provide any name for variable it's upto you
          constructor(private dummyService:yourSeerviceName) {
      
          }
      
          //access the method in you'r service by performing below action.
          this.dummyService.yourMethod();
      }
      

      【讨论】:

        【解决方案3】:

        如果您创建了一个新模块,您需要将服务引入您的模块,方法是转到.module.ts 文件并将您的服务添加到providers 数组中。它会是这样的:

        providers: [
            CartService
          ],
        

        【讨论】:

        • 他只是问如何调用未注册的服务
        • 也许你是对的,但我并不清楚。帖子指出,OP 已经在其他组件中成功使用了该服务,所以我不完全确定问题出在哪里。
        猜你喜欢
        • 2020-02-01
        • 2019-10-21
        • 2019-09-20
        • 2020-12-21
        • 1970-01-01
        • 2018-10-17
        • 1970-01-01
        • 2018-12-14
        • 2016-02-28
        相关资源
        最近更新 更多