【问题标题】:No provider for t! on checkbox input没有提供者!在复选框输入
【发布时间】:2018-03-06 05:40:27
【问题描述】:

在我的应用程序中,我有一个复选框,它具有显示和不显示选项,基于加载组件的选择。默认情况下,复选框将被选中(组件不会显示)并根据服务值显示组件,同时更新复选框选择。它在本地(开发模式)下按预期工作,但仅在服务器上的 prod 构建中出现问题。

复选框的 HTML 代码:

    <input type="checkbox" (click)="changedivStatus()" class="md-primary" [(ngModel)]="showReport" />    <span>DO NOT SHOW</span>

更新变量的服务代码:

        this.appReportsService.getUserPreference().subscribe(preference => {
                    if (preference[0].appPreferenceValue == 1) {
                        this.loadReport = true;
                        console.log(this.loadReport);
                    } else {
                        this.showReport = true;
                    }
                },
                (err) => { },
                () => { }
                );

模块代码:

import { NgModule }               from '@angular/core';
import { BrowserModule }          from '@angular/platform-browser';
import { RouterModule }         from '@angular/router';
import { FormsModule } from '@angular/forms';
import { SharedModule }          from '../shared/shared.module';

@NgModule({
    imports: [
        BrowserModule,FormsModule ,RouterModule,SharedModule ]})

export class DashboardModule {

}

出现 ERROR 错误:没有 t 的提供者!只有在订阅设置 this.loadReport 值为 true 后才会出错。

【问题讨论】:

  • 你能添加你的模块吗
  • 你在哪里使用 loadReport 变量?你能显示这部分代码吗?
  • public loadReport : boolean = false;

标签: angular


【解决方案1】:

您必须在组件文件中声明任何私有变量并在相应组件的 html 文件中使用它...请检查是否有任何

【讨论】:

  • 能否在您的问题中包含组件文件的代码
【解决方案2】:

我相信那是因为您没有在模块中为您的服务声明 provider

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule } from '@angular/router';
import { FormsModule } from '@angular/forms';

import {AppReportsService} from './path/to/your/service';

@NgModule({
    imports: [
        BrowserModule,
        FormsModule,
        RouterModule
    ],
    providers: [
        AppReportsService
    ]})

    export class DashboardModule {}

【讨论】:

  • 在 dashboard.component.ts 中已经加载了 services 。 dashboard.component.ts 内的dashboard 文件夹,dashboard.module.ts 文件夹外的dashboard.component.html
  • @Govindaraj 即使您在组件中导入它,您仍然需要在模块中将其声明为提供者
  • SharedModule 在仪表板模块中加载了相同的提供程序的所有服务我已经更新了仪表板模块文件虽然同样的错误。
  • 在这种情况下,我不确定问题可能是什么。您是否按照此处的建议 stackoverflow.com/questions/33768631/…&lt;form&gt; 中使用您的 &lt;input&gt; ?我没有测试它是否真的坏了。
猜你喜欢
  • 2018-04-24
  • 2017-08-13
  • 2017-03-08
  • 1970-01-01
  • 2018-11-29
  • 2021-05-06
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多