83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.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, Injectable, Injector, NgModule} from '@angular/core';
 | 
						|
import {BrowserModule} from '@angular/platform-browser';
 | 
						|
 | 
						|
 | 
						|
// #docregion SimpleExample
 | 
						|
@Component({selector: 'hello-world', template: 'Hello World!'})
 | 
						|
export class HelloWorld {
 | 
						|
}
 | 
						|
 | 
						|
@Component({
 | 
						|
  selector: 'ng-component-outlet-simple-example',
 | 
						|
  template: `<ng-container *ngComponentOutlet="HelloWorld"></ng-container>`
 | 
						|
})
 | 
						|
export class NgComponentOutletSimpleExample {
 | 
						|
  // This field is necessary to expose HelloWorld to the template.
 | 
						|
  HelloWorld = HelloWorld;
 | 
						|
}
 | 
						|
// #enddocregion
 | 
						|
 | 
						|
// #docregion CompleteExample
 | 
						|
@Injectable()
 | 
						|
export class Greeter {
 | 
						|
  suffix = '!';
 | 
						|
}
 | 
						|
 | 
						|
@Component({
 | 
						|
  selector: 'complete-component',
 | 
						|
  template: `Complete: <ng-content></ng-content> <ng-content></ng-content>{{ greeter.suffix }}`
 | 
						|
})
 | 
						|
export class CompleteComponent {
 | 
						|
  constructor(public greeter: Greeter) {}
 | 
						|
}
 | 
						|
 | 
						|
@Component({
 | 
						|
  selector: 'ng-component-outlet-complete-example',
 | 
						|
  template: `
 | 
						|
    <ng-container *ngComponentOutlet="CompleteComponent; 
 | 
						|
                                      injector: myInjector; 
 | 
						|
                                      content: myContent"></ng-container>`
 | 
						|
})
 | 
						|
export class NgComponentOutletCompleteExample {
 | 
						|
  // This field is necessary to expose CompleteComponent to the template.
 | 
						|
  CompleteComponent = CompleteComponent;
 | 
						|
  myInjector: Injector;
 | 
						|
 | 
						|
  myContent = [[document.createTextNode('Ahoj')], [document.createTextNode('Svet')]];
 | 
						|
 | 
						|
  constructor(injector: Injector) {
 | 
						|
    this.myInjector =
 | 
						|
        Injector.create({providers: [{provide: Greeter, deps: []}], parent: injector});
 | 
						|
  }
 | 
						|
}
 | 
						|
// #enddocregion
 | 
						|
 | 
						|
 | 
						|
@Component({
 | 
						|
  selector: 'example-app',
 | 
						|
  template: `<ng-component-outlet-simple-example></ng-component-outlet-simple-example>
 | 
						|
             <hr/>
 | 
						|
             <ng-component-outlet-complete-example></ng-component-outlet-complete-example>`
 | 
						|
})
 | 
						|
export class AppComponent {
 | 
						|
}
 | 
						|
 | 
						|
@NgModule({
 | 
						|
  imports: [BrowserModule],
 | 
						|
  declarations: [
 | 
						|
    AppComponent, NgComponentOutletSimpleExample, NgComponentOutletCompleteExample, HelloWorld,
 | 
						|
    CompleteComponent
 | 
						|
  ],
 | 
						|
  entryComponents: [HelloWorld, CompleteComponent]
 | 
						|
})
 | 
						|
export class AppModule {
 | 
						|
}
 |