
The rationale of this change is to improve the inter-operability with web components that might make use of the `<template>` tag. DEPRECATION The template tags and template attribute are deprecated: <template ngFor [ngFor]=items let-item><li>...</li></template> <li template="ngFor: let item of items">...</li> should be rewritten as: <ng-template ngFor [ngFor]=items let-item><li>...</li></ng-template> Note that they still be supported in 4.x with a deprecartion warning in development mode. MIGRATION - `template` tags (or elements with a `template` attribute) should be rewritten as a `ng-template` tag, - `ng-content` selectors should be updated to referto a `ng-template` where they use to refer to a template: `<ng-content selector="template[attr]">` should be rewritten as `<ng-content selector="ng-template[attr]">` - if you consume a component relying on your templates being actual `template` elements (that is they include a `<ng-content selector="template[attr]">`). You should still migrate to `ng-template` and make use of `ngProjectAs` to override the way `ng-content` sees the template: `<ng-template projectAs="template[attr]">` - while `template` elements are deprecated in 4.x they continue to work.
50 lines
1.3 KiB
TypeScript
50 lines
1.3 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
|
|
import {Component, NgModule, OnInit, TemplateRef, ViewChild} from '@angular/core';
|
|
import {BrowserModule} from '@angular/platform-browser';
|
|
import {Subject} from 'rxjs/Subject';
|
|
|
|
|
|
// #docregion NgTemplateOutlet
|
|
@Component({
|
|
selector: 'ng-template-outlet-example',
|
|
template: `
|
|
<ng-container *ngTemplateOutlet="greet"></ng-container>
|
|
<hr>
|
|
<ng-container *ngTemplateOutlet="eng; context: myContext"></ng-container>
|
|
<hr>
|
|
<ng-container *ngTemplateOutlet="svk; context: myContext"></ng-container>
|
|
<hr>
|
|
|
|
<ng-template #greet><span>Hello</span></ng-template>
|
|
<ng-template #eng let-name><span>Hello {{name}}!</span></ng-template>
|
|
<ng-template #svk let-person="localSk"><span>Ahoj {{person}}!</span></ng-template>
|
|
`
|
|
})
|
|
class NgTemplateOutletExample {
|
|
myContext = {$implicit: 'World', localSk: 'Svet'};
|
|
}
|
|
// #enddocregion
|
|
|
|
|
|
@Component({
|
|
selector: 'example-app',
|
|
template: `<ng-template-outlet-example></ng-template-outlet-example>`
|
|
})
|
|
class ExampleApp {
|
|
}
|
|
|
|
@NgModule({
|
|
imports: [BrowserModule],
|
|
declarations: [ExampleApp, NgTemplateOutletExample],
|
|
bootstrap: [ExampleApp]
|
|
})
|
|
export class AppModule {
|
|
}
|