| 
									
										
										
										
											2016-09-01 14:00:14 +03:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @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
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-04 14:59:52 +01:00
										 |  |  | import {Component, Injectable, Injector, NgModule} from '@angular/core'; | 
					
						
							| 
									
										
										
										
											2016-09-01 14:00:14 +03:00
										 |  |  | import {BrowserModule} from '@angular/platform-browser'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // #docregion SimpleExample
 | 
					
						
							|  |  |  | @Component({selector: 'hello-world', template: 'Hello World!'}) | 
					
						
							| 
									
										
										
										
											2019-01-28 21:59:25 +01:00
										 |  |  | export class HelloWorld { | 
					
						
							| 
									
										
										
										
											2016-09-01 14:00:14 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @Component({ | 
					
						
							|  |  |  |   selector: 'ng-component-outlet-simple-example', | 
					
						
							|  |  |  |   template: `<ng-container *ngComponentOutlet="HelloWorld"></ng-container>` | 
					
						
							|  |  |  | }) | 
					
						
							| 
									
										
										
										
											2019-01-28 21:59:25 +01:00
										 |  |  | export class NgTemplateOutletSimpleExample { | 
					
						
							| 
									
										
										
										
											2016-09-01 14:00:14 +03:00
										 |  |  |   // This field is necessary to expose HelloWorld to the template.
 | 
					
						
							|  |  |  |   HelloWorld = HelloWorld; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | // #enddocregion
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // #docregion CompleteExample
 | 
					
						
							|  |  |  | @Injectable() | 
					
						
							| 
									
										
										
										
											2019-01-28 21:59:25 +01:00
										 |  |  | export class Greeter { | 
					
						
							| 
									
										
										
										
											2017-01-09 11:54:25 -08:00
										 |  |  |   suffix = '!'; | 
					
						
							| 
									
										
										
										
											2016-09-01 14:00:14 +03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @Component({ | 
					
						
							|  |  |  |   selector: 'complete-component', | 
					
						
							|  |  |  |   template: `Complete: <ng-content></ng-content> <ng-content></ng-content>{{ greeter.suffix }}` | 
					
						
							|  |  |  | }) | 
					
						
							| 
									
										
										
										
											2019-01-28 21:59:25 +01:00
										 |  |  | export class CompleteComponent { | 
					
						
							| 
									
										
										
										
											2016-09-01 14:00:14 +03:00
										 |  |  |   constructor(public greeter: Greeter) {} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @Component({ | 
					
						
							|  |  |  |   selector: 'ng-component-outlet-complete-example', | 
					
						
							|  |  |  |   template: `
 | 
					
						
							|  |  |  |     <ng-container *ngComponentOutlet="CompleteComponent;  | 
					
						
							|  |  |  |                                       injector: myInjector;  | 
					
						
							|  |  |  |                                       content: myContent"></ng-container>` | 
					
						
							|  |  |  | }) | 
					
						
							| 
									
										
										
										
											2019-01-28 21:59:25 +01:00
										 |  |  | export class NgTemplateOutletCompleteExample { | 
					
						
							| 
									
										
										
										
											2016-09-01 14:00:14 +03:00
										 |  |  |   // This field is necessary to expose CompleteComponent to the template.
 | 
					
						
							|  |  |  |   CompleteComponent = CompleteComponent; | 
					
						
							|  |  |  |   myInjector: Injector; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   myContent = [[document.createTextNode('Ahoj')], [document.createTextNode('Svet')]]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   constructor(injector: Injector) { | 
					
						
							| 
									
										
										
										
											2018-11-27 16:04:27 +01:00
										 |  |  |     this.myInjector = | 
					
						
							|  |  |  |         Injector.create({providers: [{provide: Greeter, deps: []}], parent: injector}); | 
					
						
							| 
									
										
										
										
											2016-09-01 14:00:14 +03:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | // #enddocregion
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @Component({ | 
					
						
							|  |  |  |   selector: 'example-app', | 
					
						
							|  |  |  |   template: `<ng-component-outlet-simple-example></ng-component-outlet-simple-example>
 | 
					
						
							|  |  |  |              <hr/> | 
					
						
							| 
									
										
										
										
											2019-03-04 14:59:52 +01:00
										 |  |  |              <ng-component-outlet-complete-example></ng-component-outlet-complete-example>` | 
					
						
							| 
									
										
										
										
											2016-09-01 14:00:14 +03:00
										 |  |  | }) | 
					
						
							| 
									
										
										
										
											2019-01-28 21:59:25 +01:00
										 |  |  | export class AppComponent { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-01 14:00:14 +03:00
										 |  |  | @NgModule({ | 
					
						
							|  |  |  |   imports: [BrowserModule], | 
					
						
							|  |  |  |   declarations: [ | 
					
						
							| 
									
										
										
										
											2019-03-04 14:59:52 +01:00
										 |  |  |     AppComponent, NgTemplateOutletSimpleExample, NgTemplateOutletCompleteExample, HelloWorld, | 
					
						
							|  |  |  |     CompleteComponent | 
					
						
							| 
									
										
										
										
											2016-09-01 14:00:14 +03:00
										 |  |  |   ], | 
					
						
							| 
									
										
										
										
											2019-03-04 14:59:52 +01:00
										 |  |  |   entryComponents: [HelloWorld, CompleteComponent] | 
					
						
							| 
									
										
										
										
											2016-09-01 14:00:14 +03:00
										 |  |  | }) | 
					
						
							|  |  |  | export class AppModule { | 
					
						
							|  |  |  | } |