Angular에서 @Input 속성으로 ng-template을 얻는 방법

유리 벨리 아 코프

<ng-template>@Input 속성으로 찾아야 하는 구성 요소를 만들고 콘텐츠를 반환하려고합니다.

다음은이 구성 요소의 코드입니다.

template.component.ts

import { Component, Input, TemplateRef,  ViewChild } from '@angular/core';

@Component({
  selector: 'my-template',
  templateUrl: './template.component.html'
})
export class TemplateComponent {
  @Input() id: string;

  templateRef: TemplateRef<any>;
}

template.component.html

<ng-container *ngIf="templateRef" [ngTemplateOutlet]="templateRef"></ng-container>

<ng-template id="1" #template1>
  <p>template 1 content</p>
</ng-template>

<ng-template id="2" #template2>
  <p>template 2</p>
</ng-template>

다음은이 구성 요소를 사용하는 예입니다.

<h2>Template 1</h2>
<my-template id="template1"></my-template>

<h2>Template 2</h2>
<my-template id="template2"></my-template>

문제는 ID로 특정 템플릿을 찾는 방법입니다.

이 방법으로 시도했지만 작동하지 않습니다.

@ViewChild(this.id, { static: true }) templateRef: TemplateRef<any>;

또한 모든 템플릿을 가져 와서 목록에서 특정 항목을 찾으려고했지만 작동하지 않습니다.

@ViewChildren(TemplateRef) templates: TemplateRef<any>[];

ngAfterViewInit() {
    this.templateRef = this.templates.find(template => template.name === id);
}

https://stackblitz.com/edit/angular-my-template-dynamic

누구든지 나를 도울 수 있습니까?

유리 벨리 아 코프

여기에서 해결책을 찾았습니다. ID 별 ViewChildren 템플릿 가져 오기

간단한 지시문을 만든 다음 ID로 템플릿을 가져 오는 데 사용합니다.

TemplateIdDirective

import { Directive, Input, TemplateRef } from '@angular/core';

@Directive({
  selector: 'ng-template[id]'
})
export class TemplateIdDirective {
  @Input() id: string;

  constructor(public template: TemplateRef<any>) { }
}

template.component.ts

@ViewChildren(TemplateIdDirective) private templates: QueryList<TemplateIdDirective>;

ngAfterViewInit() {
  this.templateRef = this.getTemplateRefById(this.templates, this.id);
}

getTemplateRefById(templates: QueryList<TemplateIdDirective>, id: string): TemplateRef<any> {
  const directive = templates.find(template => template.id === id);
  return directive ? directive.template : null;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Angular의 ng-repeat에서 입력 값을 얻는 방법

분류에서Dev

Capybara에서 속성을 얻는 방법

분류에서Dev

AngularJs 지시문 : ng-repeat 요소에 속성을 동적으로 설정하는 방법

분류에서Dev

Angular : 기본 @Input 값을 얻는 방법?

분류에서Dev

angular2 또는 typescript에서 ng-select 내부 옵션을 얻는 방법

분류에서Dev

Safari에서 다운로드 속성 동작을 얻는 방법

분류에서Dev

Angular에서 ng-template을 사용하는 방법은 무엇입니까?

분류에서Dev

Angular에서 하나의 속성으로 추가 속성을 할당하는 방법

분류에서Dev

Woocommerce에서 속성을 변형으로 설정하는 방법

분류에서Dev

Powershell에서 콜론으로 xml 속성을 읽는 방법

분류에서Dev

ng-template을 동적으로 렌더링하는 방법

분류에서Dev

문자열에서이 이름으로 속성을 얻는 방법은 무엇입니까?

분류에서Dev

파이썬에서 클래스의 모든 속성을 목록으로 얻는 방법

분류에서Dev

jquery에서 사용자 정의 속성으로 입력 필드의 값을 얻는 방법

분류에서Dev

AngularJs에서 ng-tags-input과 함께 자동 완성을 사용하는 방법은 무엇입니까?

분류에서Dev

지시문에서 ng-model 값을 얻는 방법

분류에서Dev

ng-repeat에서 배열 항목을 얻는 방법?

분류에서Dev

각도 js의 ng-grid에서 행 값을 얻는 방법

분류에서Dev

ng-repeat에서 선택한 값을 얻는 방법

분류에서Dev

속성 ID를 기반으로 내부 HTML을 얻는 방법

분류에서Dev

ng- *와 다른 속성에서 범위의 변수를 얻는 방법

분류에서Dev

C ++ winrt uwp 종속성 속성에서 값을 얻는 방법

분류에서Dev

ng-change를 사용할 때 Angular js에서 DOM 속성을 수정하는 방법은 무엇입니까?

분류에서Dev

Angular의 템플릿 참조를 사용하여 ng-template을 동적으로 렌더링하는 방법

분류에서Dev

데이터베이스에서 다른 속성으로 구성된 항목의 속성을 얻는 방법은 무엇입니까?

분류에서Dev

html의 textarea에서 Angular의 .ts로 입력을 얻는 방법

분류에서Dev

온톨로지에서 속성 값을 datetime으로 정의하는 방법

분류에서Dev

Java Script로 XML에서 속성 값을 얻는 방법은 무엇입니까?

분류에서Dev

각도의 메서드에서 속성으로 값을 전달하는 방법

Related 관련 기사

  1. 1

    Angular의 ng-repeat에서 입력 값을 얻는 방법

  2. 2

    Capybara에서 속성을 얻는 방법

  3. 3

    AngularJs 지시문 : ng-repeat 요소에 속성을 동적으로 설정하는 방법

  4. 4

    Angular : 기본 @Input 값을 얻는 방법?

  5. 5

    angular2 또는 typescript에서 ng-select 내부 옵션을 얻는 방법

  6. 6

    Safari에서 다운로드 속성 동작을 얻는 방법

  7. 7

    Angular에서 ng-template을 사용하는 방법은 무엇입니까?

  8. 8

    Angular에서 하나의 속성으로 추가 속성을 할당하는 방법

  9. 9

    Woocommerce에서 속성을 변형으로 설정하는 방법

  10. 10

    Powershell에서 콜론으로 xml 속성을 읽는 방법

  11. 11

    ng-template을 동적으로 렌더링하는 방법

  12. 12

    문자열에서이 이름으로 속성을 얻는 방법은 무엇입니까?

  13. 13

    파이썬에서 클래스의 모든 속성을 목록으로 얻는 방법

  14. 14

    jquery에서 사용자 정의 속성으로 입력 필드의 값을 얻는 방법

  15. 15

    AngularJs에서 ng-tags-input과 함께 자동 완성을 사용하는 방법은 무엇입니까?

  16. 16

    지시문에서 ng-model 값을 얻는 방법

  17. 17

    ng-repeat에서 배열 항목을 얻는 방법?

  18. 18

    각도 js의 ng-grid에서 행 값을 얻는 방법

  19. 19

    ng-repeat에서 선택한 값을 얻는 방법

  20. 20

    속성 ID를 기반으로 내부 HTML을 얻는 방법

  21. 21

    ng- *와 다른 속성에서 범위의 변수를 얻는 방법

  22. 22

    C ++ winrt uwp 종속성 속성에서 값을 얻는 방법

  23. 23

    ng-change를 사용할 때 Angular js에서 DOM 속성을 수정하는 방법은 무엇입니까?

  24. 24

    Angular의 템플릿 참조를 사용하여 ng-template을 동적으로 렌더링하는 방법

  25. 25

    데이터베이스에서 다른 속성으로 구성된 항목의 속성을 얻는 방법은 무엇입니까?

  26. 26

    html의 textarea에서 Angular의 .ts로 입력을 얻는 방법

  27. 27

    온톨로지에서 속성 값을 datetime으로 정의하는 방법

  28. 28

    Java Script로 XML에서 속성 값을 얻는 방법은 무엇입니까?

  29. 29

    각도의 메서드에서 속성으로 값을 전달하는 방법

뜨겁다태그

보관