2017-08-08 59 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的答案稍好一些,因爲它在瀏覽器設置中查找語言。儘管如此,這也將起作用,所以謝謝! –

相關問題