Angular 2에서 사용자 작업시 HTML 템플릿을 동적으로 전환

파스칼

Angularjs 1.x를 사용하면 버튼 클릭으로 편집 / 읽기 전용 모드간에 HTML 템플릿을 쉽게 전환 할 수 있습니다. ng-include 지시문이 핵심이었습니다.

<table>
    <thead>
        <th>Name</th>
        <th>Age</th>
        <th></th>
    </thead>
    <tbody>
        <tr ng-repeat="contact in model.contacts" ng-include="getTemplate(contact)">
        </tr>
    </tbody>
</table>

get getTemplate 함수는 다음 코드를 실행합니다.

$scope.getTemplate = function (contact) {
    if (contact.id === $scope.model.selected.id) return 'edit';
    else return 'display';
};

이는 다시 해당 템플릿 중 하나가 UI에서 활성화되도록합니다.

디스플레이

  <script type="text/ng-template" id="display">
        <td>{{contact.name}}</td>
        <td>{{contact.age}}</td>
        <td>
            <button ng-click="editContact(contact)">Edit</button>
        </td>
    </script>

편집하다

<script type="text/ng-template" id="edit">
    <td><input type="text" ng-model="model.selected.name" /></td>
    <td><input type="text" ng-model="model.selected.age" /></td>
    <td>
        <button ng-click="saveContact($index)">Save</button>
        <button ng-click="reset()">Cancel</button>
    </td>
</script>

https://jsfiddle.net/benfosterdev/UWLFJ/

Angular 2 RC 4에는 n-include가 없습니다.

Angular 2 RC4로 동일한 기능을 어떻게 수행합니까?

Yurzui

나는 그렇게 ngTemplateOutlet하기 위해 지시를 활용할 것입니다.

이후의 버전 2.0.0-rc.2 (2016년 6월 15일) 컨텍스트에 첨가NgTemplateOutlet

이 기능을 사용하려고 할 수 있습니다 내에서 설명한대로 데모 plunker (업데이트 4.XX )

template.html

<table>
    <thead>
        <th>Name</th>
        <th>Age</th>
        <th></th>
    </thead>
    <tbody>
        <tr *ngFor="let contact of contacts; let i = index">
            <ng-template [ngTemplateOutlet]="getTemplate(contact)" 
            [ngOutletContext]="{ $implicit: contact, index: i }"></ng-template>
        </tr>
    </tbody>
</table>


<ng-template #displayTmpl let-contact>
    <td>{{contact.name}}</td>
    <td>{{contact.age}}</td>
    <td>
        <button (click)="editContact(contact)">Edit</button>
    </td>
</ng-template>

 <ng-template #editTmpl let-i="index">
    <td><input type="text" [(ngModel)]="selected.name" /></td>
    <td><input type="text" [(ngModel)]="selected.age" /></td>
    <td>
        <button (click)="saveContact(i)">Save</button>
        <button (click)="reset()">Cancel</button>
    </td>
</ng-template>

component.ts

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

interface Contact {
    id: number;
    name: string;
    age: number
}

@Component({
    ....
})
export class App {
    @ViewChild('displayTmpl') displayTmpl: TemplateRef<any>;
    @ViewChild('editTmpl') editTmpl: TemplateRef<any>;

    contacts: Array<Contact> = [{
            id: 1,
            name: "Ben",
            age: 28
        }, {
            id: 2,
            name: "Sally",
            age: 24
        }, {
            id: 3,
            name: "John",
            age: 32
        }, {
            id: 4,
            name: "Jane",
            age: 40
        }];

    selected: Contact;

    getTemplate(contact) {
        return this.selected && this.selected.id == contact.id ? 
        this.editTmpl : this.displayTmpl;
    }

    editContact(contact) {
        this.selected = Object.assign({}, contact);
    }

    saveContact (idx) {
        console.log("Saving contact");
        this.contacts[idx] = this.selected;
        this.reset();
    }

    reset() {
        this.selected = null;
    }
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

HTML 템플릿의 angular2에서 문자열을 배열로 변환

분류에서Dev

HTML / angular2 템플릿 엔진을 사용하여 angular2의 동적 데이터 시각화

분류에서Dev

Angular HTML 템플릿을 백본 템플릿에 전달

분류에서Dev

Angular 프로젝트에서 HTML 템플릿 재사용

분류에서Dev

zend 2 : 사이트 전체 구성을 수정하지 않고 모듈의 모든 작업에 대한 템플릿을 자동으로 삽입합니다.

분류에서Dev

Angular : HTML 템플릿에서 삼항 연산자 사용

분류에서Dev

Angular JS : 사용자 지정 지시문 템플릿 내에서 Javascript가 작동하지 않음

분류에서Dev

한 템플릿에서 다른 템플릿으로 Angular 2 전송 변수

분류에서Dev

XML을 HTML로 변환 할 때 반드시 XSLT 용 템플릿을 사용해야합니까?

분류에서Dev

XML을 HTML로 변환 할 때 반드시 XSLT 용 템플릿을 사용해야합니까?

분류에서Dev

django 템플릿에서 python을 html로 변환하는 방법

분류에서Dev

Angular2는 템플릿을 선택기로 사용

분류에서Dev

Rails for AngularJS에서 HTML / erb 템플릿을 즉시로드

분류에서Dev

전자 애플리케이션에서 html 파일을 동적으로로드

분류에서Dev

템플릿에서 Angular2 지시문 사용

분류에서Dev

Angular2에서 <html> 템플릿을 어떻게 사용할 수 있습니까?

분류에서Dev

Angular JS 지시문 / 템플릿을 동적으로로드하는 방법

분류에서Dev

Angular2에서 PhoneGap 사용, 템플릿로드 문제

분류에서Dev

갠트리가 아닌 템플릿 (일반 HTML 템플릿)을 joomla 용 Gantry 템플릿으로 변환 할 수 있습니까?

분류에서Dev

저장 작업시 Visual Studio에서 자동으로 컴파일되도록 Jade 템플릿을 얻으려면 어떻게해야합니까?

분류에서Dev

Angular에서 ngTemplateOutlet을 사용하는 동안 템플릿 구문 분석 오류

분류에서Dev

지시문에서 함수 인수를 html 템플릿으로 전달

분류에서Dev

템플릿 클래스의 템플릿 생성자에 대한 명시 적 템플릿 전문화

분류에서Dev

Angular 지시문에서 작동하는 동적 템플릿을 가져올 수 없습니다.

분류에서Dev

템플릿 유형에 따라 사용할 방법을 동적으로 지정

분류에서Dev

Angular의 ng-switch에서 HTML 템플릿 사용

분류에서Dev

gcc 9.3을 사용한 부분 템플릿 전문화 실패, 이전에 작동하던 문제

분류에서Dev

Angular 2 동적 템플릿

분류에서Dev

Angular 2 동적 템플릿

Related 관련 기사

  1. 1

    HTML 템플릿의 angular2에서 문자열을 배열로 변환

  2. 2

    HTML / angular2 템플릿 엔진을 사용하여 angular2의 동적 데이터 시각화

  3. 3

    Angular HTML 템플릿을 백본 템플릿에 전달

  4. 4

    Angular 프로젝트에서 HTML 템플릿 재사용

  5. 5

    zend 2 : 사이트 전체 구성을 수정하지 않고 모듈의 모든 작업에 대한 템플릿을 자동으로 삽입합니다.

  6. 6

    Angular : HTML 템플릿에서 삼항 연산자 사용

  7. 7

    Angular JS : 사용자 지정 지시문 템플릿 내에서 Javascript가 작동하지 않음

  8. 8

    한 템플릿에서 다른 템플릿으로 Angular 2 전송 변수

  9. 9

    XML을 HTML로 변환 할 때 반드시 XSLT 용 템플릿을 사용해야합니까?

  10. 10

    XML을 HTML로 변환 할 때 반드시 XSLT 용 템플릿을 사용해야합니까?

  11. 11

    django 템플릿에서 python을 html로 변환하는 방법

  12. 12

    Angular2는 템플릿을 선택기로 사용

  13. 13

    Rails for AngularJS에서 HTML / erb 템플릿을 즉시로드

  14. 14

    전자 애플리케이션에서 html 파일을 동적으로로드

  15. 15

    템플릿에서 Angular2 지시문 사용

  16. 16

    Angular2에서 <html> 템플릿을 어떻게 사용할 수 있습니까?

  17. 17

    Angular JS 지시문 / 템플릿을 동적으로로드하는 방법

  18. 18

    Angular2에서 PhoneGap 사용, 템플릿로드 문제

  19. 19

    갠트리가 아닌 템플릿 (일반 HTML 템플릿)을 joomla 용 Gantry 템플릿으로 변환 할 수 있습니까?

  20. 20

    저장 작업시 Visual Studio에서 자동으로 컴파일되도록 Jade 템플릿을 얻으려면 어떻게해야합니까?

  21. 21

    Angular에서 ngTemplateOutlet을 사용하는 동안 템플릿 구문 분석 오류

  22. 22

    지시문에서 함수 인수를 html 템플릿으로 전달

  23. 23

    템플릿 클래스의 템플릿 생성자에 대한 명시 적 템플릿 전문화

  24. 24

    Angular 지시문에서 작동하는 동적 템플릿을 가져올 수 없습니다.

  25. 25

    템플릿 유형에 따라 사용할 방법을 동적으로 지정

  26. 26

    Angular의 ng-switch에서 HTML 템플릿 사용

  27. 27

    gcc 9.3을 사용한 부분 템플릿 전문화 실패, 이전에 작동하던 문제

  28. 28

    Angular 2 동적 템플릿

  29. 29

    Angular 2 동적 템플릿

뜨겁다태그

보관