如何导入 providedIn: root 单例服务?
How do I import the providedIn: root singleton service?
假设这是我的简单服务:
@Injectable({
providedIn: 'root'
})
export class UserpreferencesService {
color: string = 'yellow';
constructor() {
console.log("UserpreferencesService instance created");
}
}
我有两个组件,我想在其中使用服务中的颜色字段。如果我在每个组件中导入服务,它就不会充当单例:每次切换组件时我都会有一个新实例。这是 Stackblitz.
如果我不导入任何内容,将无法识别该服务:"Cannot find name UserpreferencesService"。这就是我在组件内部使用服务的方式:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-compone',
templateUrl: './compone.component.html',
styleUrls: ['./compone.component.css']
})
export class ComponeComponent implements OnInit {
constructor(private UserPreferences: UserpreferencesService) {
this.UserPreferences.color = 'green';
}
ngOnInit() {
}
}
该服务不在任何提供商列表中。我该如何解决?
每个组件中都必须导入服务。
我的问题是我是从地址栏导航的(这完全刷新了应用程序)。
您必须使用 routerLink 才能获得单例服务。
假设这是我的简单服务:
@Injectable({
providedIn: 'root'
})
export class UserpreferencesService {
color: string = 'yellow';
constructor() {
console.log("UserpreferencesService instance created");
}
}
我有两个组件,我想在其中使用服务中的颜色字段。如果我在每个组件中导入服务,它就不会充当单例:每次切换组件时我都会有一个新实例。这是 Stackblitz.
如果我不导入任何内容,将无法识别该服务:"Cannot find name UserpreferencesService"。这就是我在组件内部使用服务的方式:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-compone',
templateUrl: './compone.component.html',
styleUrls: ['./compone.component.css']
})
export class ComponeComponent implements OnInit {
constructor(private UserPreferences: UserpreferencesService) {
this.UserPreferences.color = 'green';
}
ngOnInit() {
}
}
该服务不在任何提供商列表中。我该如何解决?
每个组件中都必须导入服务。 我的问题是我是从地址栏导航的(这完全刷新了应用程序)。 您必须使用 routerLink 才能获得单例服务。