目前我正试图在应用程序中注入某种设置类。
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
@Injectable()
export class Settings {
private apiUrl: string = '';
private location: string = '';
private language: string = 'en';
constructor() {
if(localStorage.getItem('apiUrl')) this.apiUrl = localStorage.getItem('apiUrl');
if(localStorage.getItem('location')) this.location = localStorage.getItem('location');
if(localStorage.getItem('language')) this.language = localStorage.getItem('language');
}
getApiUrl(): string {
return this.apiUrl;
}
getLocation(): string {
return this.location;
}
getLanguage(): string {
return this.language;
}
setApiUrl(apiUrl: string): void {
this.apiUrl = apiUrl;
localStorage.setItem('apiUrl', apiUrl);
}
setLocation(location: string): void {
this.location = location;
localStorage.setItem('location', location);
}
setLanguage(language: string): void {
this.language = language;
localStorage.setItem('language', language);
}
}
这是我的设置类...
我接下来尝试做的是通过整个应用程序注入(因为设置将被大量使用)。为此,我认为最好的方法是使用bootstrap()函数执行此操作。所以这是我的自助功能:
bootstrap(AppComponent, [Settings])
我确实将它插入到我想要使用apiUrl设置的服务的构造函数中:
@Injectable()
export class UserService {
constructor(private _settings: Settings, private _http:Http) { }
}
但由于某些原因,在运行应用程序时,我在UserService中收到一条错误,指出构造函数的第一个参数(_settings)未定义。
我一直在尝试不同的事情,但还没找到合适的解决方案..
答案 0 :(得分:1)
您是否忘记在UserService中导入Settings类?
您没有列出UserService的顶部...
答案 1 :(得分:0)
好的,所以在尝试了很多事情之后我发现了问题所在。
我有一个TS文件,其中包含我拥有的每个文件夹的所有导出..
我有这个核心文件夹,包含Settings类和一个名为core.ts的文件。
当我这样做时:import { Settings } from './core';
它不起作用。
但是当我这样做时:import { Settings } from './core/settings
,它确实有效。