2017-08-08 66 views

回答

2

这可能很难,特别是在使用aot时。它通常会要求你做出不同的构建。我扩展了数据管道并使用浏览器语言环境。

Datepipe:

@Pipe({name: 'datepipe', pure: true}) 
export class MyDatePipe extends DatePipe implements PipeTransform { 
    constructor(private win: WindowRef) { 
    super(win.ln); 
    } 

    transform(value: any, pattern?: string): string | null { 
    return super.transform(value, pattern); 
    } 
} 

窗口:

function _window(): any { 
    // return the global native browser window object 
    return window; 
} 

@Injectable() 
export class WindowRef { 
    get nativeWindow(): any { 
    return _window(); 
    } 

    public ln = 'en'; 


    constructor() { 
    try { 
     if (!isNullOrUndefined(this.nativeWindow.navigator.language) && this.nativeWindow.navigator.language !== '') { 
     this.ln = this.nativeWindow.navigator.language; 
     } 
    }finally {} 
    } 
} 
+0

对不起,我的无知,但你是什么意思与窗口?那只是一个window.ts文件?我如何在Angular项目中实现这个功能? –

+1

这是一个简单的服务 –

+0

哦,我现在看到,谢谢!很好的回答 –

1

您可以检查位置,并把它放在if语句 是的,你可以使用管道这样的:

 <div *ngif="Location() === 'Europe' " 
    {{valueDate | date: 'dd/MM/yyyy'}} 
    <div> 
    <div *ngif="Location() === 'Ammerica' " 
    {{valueDate | date: 'MM/dd/yyyy'}} 
    <div> 

要找到位置

getCurrentLocation(lat,lng): Observable<any> { 
return this._http.get("http://maps.googleapis.com/maps/api/geocode/json?latlng="+lat+","+lng+"&sensor=true") 
    .map(response => response.json()) 
    .catch(error => { 
    console.log(error); 
    return Observable.throw(error.json()); 
    }); 

}

+0

能否请你解释一下我可以检查的位置?我不需要用户的许可来做到这一点? –

+1

我编辑上面的代码,看代码,我希望它是有用的 – ZAhmed

+0

感谢您的答案,我认为这也将确实工作。但我认为Robin Dijkhof的答案稍好一些,因为它在浏览器设置中查找语言。尽管如此,这也将起作用,所以谢谢! –