-1

我已经构建了一个演示,它创建了 2 个自定义角度元素(结帐 app.module)。像魅力一样工作,但有一个问题,如果我在父元素(称为 BarComponent)中提供服务,它的子 CE(称为 TestComponent)不会收到它

@Component({
  templateUrl: './bar-ce.component.html',
  providers: [TestService] // <-- this one!!
})
export class BarComponent {}

在其 html 中,它呈现子 CE:TEST-CE: <test-ce></test-ce>

如果我尝试以这种方式注入我的TestService,我会得到“NullInjectorError:没有 TestService 的提供者!”

但是,如果我在 app.module 中提供它,它就会再次起作用。所以我的问题是,有没有办法解决这个问题,或者这只是 CE 的方式(希望不是)?

4

2 回答 2

1

您应该根据您的演示解决您的问题。

TEST-CE: <test-ce [testService]="testService"></test-ce>

然后在你的子组件上这样做。

import { Component, Input, OnInit } from '@angular/core';

import { TestService } from '../test.service';

@Component({
  templateUrl: './test.component.html',
  styleUrls: ['./test.component.css']
})
export class TestComponent implements OnInit {

  @Input() testService: TestService

  numInput: number;

  constructor() { 
    console.log('test-ce constructor.');
  }

  ngOnInit() {
    this.numInput = this.testService.value;
  }

}
于 2020-10-12T20:36:47.970 回答
0

应在模块中提供共享服务。并在构造函数中初始化latar(私有testService:Testservice)

于 2020-10-12T20:35:24.763 回答