環境固有の変数を自分のライブラリに渡そうとしています。そして、それを forRoot() に渡します。ハードコードされた値の場合は渡すことができますが、ライブラリに渡すと環境値の場合は未定義として表示されます。
const rootUrl = environment.rootURL;
@NgModule({
imports: [
// configs go in here
coachModule.forRoot(
{
apiURL: 'test.com',
scoreData: {
score: 708
},
rootURL: rootUrl
}),
...
@NgModule にブレークポイントを設定すると rootUrl が定義されますが、ライブラリにブレークポイントを設定すると rootURL は定義されません。
私はAngular 5を使用しています。問題をグーグルで調べてみましたが、解決策が見つかりませんでした。
これは一般的な問題ですか?この環境変数を渡す別の方法は何ですか? どんな助けでも感謝します:)
更新:正しく機能していない理由がわかりました。--aot でビルドしていたので、デバッグ時に rootUrl の値を確認できました。これは、ランタイムでチェックしていたのですが、コンパイル時にライブラリに渡していたためです (未定義の値で)。
私は今、この可能な解決策を試しています。誰かが他の潜在的な解決策を持っているなら、私は感謝します
解決策:私の解決策は、環境変数が aot でコンパイルされたので、変数を関数として渡すことでした。これは、ランタイムでそれらを実行する必要がありました。
次のような関数を作成し、参照をライブラリに渡しました
export function getRootURL() {
return environment.rootURL;
}