gpt4 book ai didi

javascript - NullInjectorError : No provider for Globals

转载 作者:行者123 更新时间:2023-12-01 16:30:38 27 4
gpt4 key购买 nike

我正在尝试使用 Angular 6 创建一个全局变量文件。此文件中的变量可以由其他组件更改。于是我看到了this示例并尝试在我的项目中实现它。

app.module.ts:

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

import { Globals } from './globals';

import { AppComponent } from './app.component';
import { SideMenuComponent } from './side-menu/side-menu.component';

@NgModule({
declarations: [
AppComponent,
SideMenuComponent
],
imports: [
BrowserModule,
],
providers: [ Globals ],
bootstrap: [AppComponent]
})
export class AppModule { }

side-menu.component.ts:
import { Component, OnInit } from '@angular/core';
import { sideMenu } from './side-menu.links.js';
import { Globals } from '../globals.js';

@Component({
selector: 'side-menu',
templateUrl: './side-menu.component.html',
styleUrls: ['./side-menu.component.css']
})
export class SideMenuComponent implements OnInit {

isSideMenuOpen: boolean;
mainLinks: {url: string, target: string}[]}[] = []
bottomNav: {url: string, target: string}[]}[] = []

constructor(private globals: Globals) {
this.isSideMenuOpen = globals.isSideMenuOpen;
}

ngOnInit() {
this.mainLinks = sideMenu.mainLinks;
}

toggleSideMenu() {
this.globals.isSideMenuOpen = !this.isSideMenuOpen;
}

}

globals.ts:
import { Injectable } from '@angular/core';

@Injectable()
export class Globals {
isSideMenuOpen: boolean = true;
}

索引.html:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>ConfigUi</title>
<base href="/">

<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body [class.sidemenu-open]="globals.isSideMenuOpen">
<app-root class="grafana-app"></app-root>
</body>
</html>
isSideMenuOpen boolean 用于在正文中添加或删除类。此变量由侧边菜单组件内的功能切换,使用 toggleSideMenu()按钮。

错误:
StaticInjectorError(AppModule)[SideMenuComponent -> Globals]: 
StaticInjectorError(Platform: core)[SideMenuComponent -> Globals]:
NullInjectorError: No provider for Globals!

为什么这不起作用?我如何使它工作?

最佳答案

我正在使用相同的example
如果您在 app.module.ts 中将 Globals 添加为 Provider,它应该可以工作。
我所做的是:
全局变量:

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

@Injectable()
export class Globals {
section: string = 'Value';

changeValue(value: string){
this.section = value;
}
}
在组件处:
import { Globals } from '../globals';

export ClassName implement OnInit {
g: Globals;

constructor(public globals: Globals){
this.g = globals;
}

}
然后在 html 处修改值:
<div (click)="g.changeValue('StringValue')"> <div>

关于javascript - NullInjectorError : No provider for Globals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51301890/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com