typescript “空注入器错误:没有订阅的提供程序!为什么在控制台中出现此错误?

jvidinwx  于 2023-02-05  发布在  TypeScript
关注(0)|答案(1)|浏览(165)

下面是我在组件中所做的工作:

import { Component, OnDestroy, OnInit } from '@angular/core';
import { interval, Subscription } from 'rxjs';

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css'],
})
export class HomeComponent implements OnInit, OnDestroy {
  constructor(private firstObsSubscription: Subscription) {}

  ngOnInit() {
    interval(1000).subscribe((count) => console.log(count));
  }

  ngOnDestroy() {
    this.firstObsSubscription.unsubscribe();
  }
}

组件然后被捆绑到模块中,模块随后被注入到另一个模块中。

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { UserComponent } from './user/user.component';
import { AppRoutingModule } from './app-routing.module';

@NgModule({
  declarations: [AppComponent, HomeComponent, UserComponent],
  imports: [BrowserModule, AppRoutingModule],
  providers: [],
  bootstrap: [AppComponent],
})
export class AppModule {}

很明显,我做错了什么

mnemlml8

mnemlml81#

您可能需要这样做:

import { Component, OnDestroy, OnInit } from '@angular/core';
import { interval, Subscription } from 'rxjs';

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css'],
})
export class HomeComponent implements OnInit, OnDestroy {

  private firstObsSubscription: Subscription
  
  constructor() {}

  ngOnInit() {
    this.firstObsSubscription = interval(1000).subscribe((count) => console.log(count));
  }

  ngOnDestroy() {
    this.firstObsSubscription?.unsubscribe();
  }
}

正如评论中提到的其他人:如果你在一个Angular应用程序中给构造函数添加了一个参数,Angular会试图找到一个在你的情况下不可用的类型的依赖项,也许在这个特殊的情况下不应该这样做。

相关问题