首页 > 解决方案 > 如何使用 Angular 6/7 将服务注入另一个服务?(providedIn: 'root') 服务总是未定义的

问题描述

服务在注入另一个使用时保持未定义providedIn: "root"

我试图放入 module 和/或 component:providers: [service1, service2]和 remove providedIn: "root",但它仍然无法正常工作。

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

    @Injectable({
        providedIn: 'root'
    })
    export class Service2 {
        constructor(private service1: Service1) {
            console.log(service1) // undefined
        }
     }

     export class Component {
         constructor(private service2: Service2) {}
     }

服务 1 始终未定义

标签: angulartypescriptservice

解决方案


这是一个很好的问题,答案是:

这取决于执行顺序

如果你在 service1 之前定义你的 service2 它会抛出错误,所以顺序很重要

代码片段

回复


推荐阅读