最新のangular_components-0.6.0-alpha+2
パッケージでいくつかのテストをしています。私の<material-dropdown-select>
コンポーネントを角型アプリケーションでユニットテストしたいからです。私は基本的にpageloader
パッケージを使用して、テスト中にドロップダウンをクリックして開き、オプションをクリックしたいとします。 <div id="default-acx-overlay-container">
は、そうでない場合は、デフォルトでは、私はないだろう(<body>
の直接の子になりますので、コンポーネントテストで `angular_components`の` material-dropdown-select`を使用しようとしています
今私は<div id="my-container">
<my-app>Loading...</my-app>
<div id="my-container"></div>
</body>
</html>
私のカスタム内(angular_components
によって生成されます)<div id="default-acx-overlay-container">
をマウントしようとしていますpageloader
の@ByCSS
セレクタでアクセスできます)。従って私は(providers:
部分を注意してください)これを変更するためにoverlayContainerParent
角度プロバイダを上書き:
HtmlElement getOverlayContainerParent(Document doc) =>
doc.querySelector('#my-container');
@Component(
selector: 'material-select-demo',
styleUrls: const ['material_select_demo.css'],
templateUrl: 'material_select_demo.html',
directives: const [
CORE_DIRECTIVES,
DisplayNameRendererDirective,
ExampleRendererComponent,
MaterialCheckboxComponent,
MaterialDropdownSelectComponent,
MaterialSelectComponent,
MaterialSelectItemComponent,
],
providers: const [
const Provider(overlayContainerParent,
useFactory: getOverlayContainerParent, deps: const [Document]),
],
)
class MaterialSelectDemoComponent {
私の問題は、しかし、いくつかの理由でプロバイダが上書きされないということです。
私の問題を示すために、angular_components_example
アプリの簡易版であるサンプルアプリケーションを作成しました。アプリを実行する場合、ドロップダウン選択を開き、DOMを調べると、の<div id="default-acx-overlay-container">
は私の意図通りに<div id="my-container">
の下にマウントされません。ここに私のアプリ例があります:
これで解決しましたので、渡したテスト[here](https://github.com/ben4ever/angular_components_example/commits/add_dropdown_select_test)で実際のサンプルを見つけることができます。 – ben4ever