Angular6 我们可以通过从服务中的http调用获取值来动态设置angular 6中的APP_BASE_HREF吗?
这是app.module.ts文件中的代码Angular6 我们可以通过从服务中的http调用获取值来动态设置angular 6中的APP_BASE_HREF吗?,angular6,angular-universal,server-side-rendering,Angular6,Angular Universal,Server Side Rendering,这是app.module.ts文件中的代码 { provide: APP_BASE_HREF, useFactory: referalCodeValidator, deps: [ValidatorService] } app.module.ts文件本身中定义了一个ReferalDevalidator函数 export function referalCodeValidator(common: ValidatorService) { let path = location.pat
{
provide: APP_BASE_HREF,
useFactory: referalCodeValidator,
deps: [ValidatorService]
}
app.module.ts文件本身中定义了一个ReferalDevalidator函数
export function referalCodeValidator(common: ValidatorService) {
let path = location.pathname;
let refCode = path.split("/", 2);
return common.validateReferralCode(refCode[1]);
}
验证程序服务如下所示:
import { Injectable } from "@angular/core";
import { Observable } from "rxjs";
import { environment } from "../../environments/environment";
import { HttpClient } from "@angular/common/http";
import { tap, catchError } from "rxjs/operators";
@Injectable()
export class ValidatorService {
appBaseHref: any;
constructor(private http: HttpClient) {}
validateReferralCode(refCode): Observable<any> {
if (refCode != "" || refCode != null) {
this.appBaseHref = null;
return this.http
.get(someurl, {
params: {
referenceCode: refCode
}
})
.pipe(catchError((error, caught) => {
console.log(error);
throw error.error;
}) as any);
}
}
}
从“@angular/core”导入{Injectable};
从“rxjs”导入{observeable};
从“../../environments/environment”导入{environment}”;
从“@angular/common/http”导入{HttpClient};
从“rxjs/operators”导入{tap,catchError};
@可注射()
导出类验证服务{
appBaseHref:any;
构造函数(私有http:HttpClient){}
ValidateFerralCode(参考代码):可观察{
if(refCode!=“”| | refCode!=null){
this.appBaseHref=null;
返回此文件。http
.get(someurl{
参数:{
referenceCode:refCode
}
})
.pipe(catchError)(错误,捕获)=>{
console.log(错误);
抛出错误;
})(如有的话);
}
}
}