STE*_*EEL 11 javascript service singleton angular
我正在阅读应用程序http:// localhost /?config = preprod的网址
我试图创建一个Singleton服务,它读取UrlParameters.js并公开get(key)
方法.以下哪家商店config=preprod
类似(来自我的Angular 1.x单件服务)
get: function (key) {
if (!params) {
params = {};
var queryString = window.location.search.substring(1);
_(queryString.split('&')).each(function (param) {
var val = param.split('=');
params[val[0]] = val[1];
});
}
return params[key];
}
Run Code Online (Sandbox Code Playgroud)
现在,我想我也需要在Angular 2中访问此服务中的Route params,因为我无法在Angular 2中执行此操作.
此外,我需要与另一个名为Flag的Singleton服务共享此UrlParams单例.其中读取Flag.get('config')下面的内容(从我的Angular 1.x项目中提取) Flag.js
set: function (flag) {
if (UrlParameter.get(flag)) {
localStorage.setItem(flag, UrlParameter.get(flag));
}
},
get: function (flag) {
return localStorage.getItem(flag);
}
Run Code Online (Sandbox Code Playgroud)
正如@JordanFrankfurt建议我使用位置服务,符合我的目的.还要感谢@GünterZöchbauer的努力.
下面是我的UrlParams服务,它也被添加到NgModule下 providers
url-parameter.service.ts
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/filter';
import {LocationStrategy} from '@angular/common';
@Injectable()
export class UrlParameterService {
public params = null;
constructor(private location: LocationStrategy) {}
get(key:string):String {
debugger;
if (!this.params) {
this.params = {};
var queryString = this.location.path();
queryString.split('&').forEach((param) => {
var val = (param.indexOf('?') ? param.slice(param.indexOf('?')+1).split('=') : param.split('='));
this.params[val[0]] = val[1];
});
}
return this.params[key] || false;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
610 次 |
最近记录: |