Im пытается создать файл глобальных переменных с помощью углового 6. Переменные в этом файле могут быть изменены другими компонентами. Поэтому я увидел этот образец и попытался реализовать его в своем проекте.
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 { }
Побочный 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;
}
index.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
Булево используется для добавления или удаления класса из организма. Эта переменная переключается на функциональность внутри компонента бокового меню с помощью toggleSideMenu()
кнопки.
Ошибка:
StaticInjectorError(AppModule)[SideMenuComponent -> Globals]:
StaticInjectorError(Platform: core)[SideMenuComponent -> Globals]:
NullInjectorError: No provider for Globals!
Почему это не работает? Как мне заставить работать?
Im пытается создать файл глобальных переменных с помощью углового 6. Переменные в этом файле могут быть изменены другими компонентами. Поэтому я увидел этот образец и попытался реализовать его в своем проекте.
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 { }
Побочный 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;
}
index.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
Булево используется для добавления или удаления класса из организма. Эта переменная переключается на функциональность внутри компонента бокового меню с помощью toggleSideMenu()
кнопки.
Ошибка:
StaticInjectorError(AppModule)[SideMenuComponent -> Globals]:
StaticInjectorError(Platform: core)[SideMenuComponent -> Globals]:
NullInjectorError: No provider for Globals!
Почему это не работает? Как мне заставить работать?
00JavaScript, HTML, угловые,