2016-11-14 9 views
1

角2では、IE9のみハッシュ戦略を使用したいと考えています。そのために、IE9ブラウザを検出した場合にのみ、ルータがハッシュ戦略を使用するように設定します。角2 AOT「式がサポートされていません」エラー

TSCでコンパイルするとき、これは働いていた:NGCコンパイラ(AOTコンパイルが)それを受け入れていないしかし

const useHash: boolean = (typeof window.history.pushState) !== 'function'; 

@NgModule({ 
    declarations: [AppComponent], 
    imports: [ 
    RouterModule.forRoot(appRoutes, {initialNavigation : false, useHash : useHash}) 
    ] 
    providers: [], 
    bootstrap: [AppComponent] 
}) 
export class AppModule {} 

。 ngc(const宣言行)で次のエラーがスローされます。

シンボル値を静的に解決する際にエラーが発生しました。

@NgModule({ 
    declarations: [AppComponent], 
    imports: [ 
     RouterModule.forRoot(appRoutes, {initialNavigation : false, useHash : AppModule.useHash}) 
    ], 
    providers: [], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { 
    static useHash: boolean = (typeof window.history.pushState) !== 'function'; 
} 

しかし、私は(今回プロバイダライン上)と同じエラーを取得:表現形式が

をサポートしていない私はまた、(:https://medium.com/@isaacplmann/making-your-angular-2-library-statically-analyzable-for-aot-e1c6f3ebedd5#.h4pnszi13この記事に基づいて)試してみました。私がstatic useHash: boolean = false;を実行すると動作することに注意してください。

モジュール宣言の問題をどのように解決できますか?

答えて

0

useHash関数を(最初のコードスニペットから)エクスポートするだけで動作するはずです。怒鳴るコードスニペットを参照してください:あなたが持っている

export function useHash() { 
    return (typeof window.history.pushState) !== 'function'; 
} 

@NgModule({ 
    declarations: [AppComponent], 
    imports: [ 
    RouterModule.forRoot(appRoutes, {initialNavigation : false, useHash : useHash}) 
    ] 
    providers: [], 
    bootstrap: [AppComponent] 
}) 
export class AppModule {} 
+0

が提案しかし、誰それをありがとう動作しません。私は 'Argument of type 'を得る{initialNavigation:false; useHash:()=> boolean; } 'は' ExtraOptions 'タイプのパラメータに割り当てられません。 プロパティ 'useHash'のタイプは互換性がありません。 'useHash:useHash()'を試してみると、元のエラーが出ます。 – j3r6me

0

問題は確かに奇妙である、AOTコンパイラはすぐに解決されなければならないので、TSの制限の完全な画像を得ることに少し制限されています。あなたはあなただけの角度コンパイラにちょっとしたトリックを再生する必要があなたの問題を回避するには、更新 https://github.com/angular/angular/issues/13138

ために、この問題を追跡することができ

...

const rConfig = { useHash: true, preloadingStrategy: PreloadAllModules }; 
rConfig.useHash = (typeof window.history.pushState) !== 'function'; 


@NgModule({ 
    declarations: [AppComponent], 
    imports: [ 
    RouterModule.forRoot(appRoutes, rConfig) 
    ] 
    providers: [], 
    bootstrap: [AppComponent] 
}) 
export class AppModule {} 
関連する問題