アングラー6は、コンポネントOutletを利用してコンポーネント位置交換(再配置)を実現します.
2260 ワード
ngContentOutletコマンド紹介
ダイナミックコンポーネントとは、異なるのは、
前者が伝わったのは一つです.
コンポーネント位置交換を実現
アングラーの中のビューはデータと結合されています.HTML DOM要素を直接操作することを勧めていません.データを操作する方法でコンポーネントビューを変えることを勧めています.
最初に二つのコンポーネントを定義します.
動的にコンポーネントを作成し、位置交換を実現します.
まず、上記で作成した2つのコンポーネントを保存するための配列を作成します.
ngContentOutlet
コマンドとngTemplateOutlet
命令は同様で、いずれも使用されます.ダイナミックコンポーネントとは、異なるのは、
前者が伝わったのは一つです.
Component
、後者が入ってきたのは一つです.TemplateRef
まず使ってみます.
MyComponent
は、私たちがカスタマイズしたコンポーネントです.このコマンドは自動的にコンポーネント工場を作成し、ng-container
にビューを作成します.コンポーネント位置交換を実現
アングラーの中のビューはデータと結合されています.HTML DOM要素を直接操作することを勧めていません.データを操作する方法でコンポーネントビューを変えることを勧めています.
最初に二つのコンポーネントを定義します.
button.component.ts
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-button',
template: ``,
styleUrls: ['./button.component.css']
})
export class ButtonComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
text.component.ts
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector: 'app-text',
template: `
`,
styleUrls: ['./text.component.css']
})
export class TextComponent implements OnInit {
@Input() public textName = 'null';
constructor() { }
ngOnInit() {
}
}
下のコードにおいて、上記二つのコンポーネントを動的に作成し、位置交換機能を実現します.動的にコンポーネントを作成し、位置交換を実現します.
まず、上記で作成した2つのコンポーネントを保存するための配列を作成します.
ButtonComponent
とTextComponent
、位置交換の場合は、配列内のコンポーネントの位置を交換するだけでいいです.コードは以下の通りです.import { TextComponent } from './text/text.component';
import { ButtonComponent } from './button/button.component';
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: `
`,
styleUrls: ['./app.component.css']
})
export class AppComponent {
public componentArr = [TextComponent, ButtonComponent];
constructor() {
}
public swap() {
const temp = this.componentArr[0];
this.componentArr[0] = this.componentArr[1];
this.componentArr[1] = temp;
}
}
実行コマンドnpm start
は、ブラウザで以下のような効果を見ることができる.