pasar parametros otro enviar entre datos comunicacion componentes componente angular dependencies

parametros - inyección angular 2 no funciona en herencia



pasar parametros entre componentes angular 2 (1)

Recientemente hemos actualizado de Angular 2.0 a 2.4 y desde entonces tenemos problemas con la herencia. todas las dependencias se vuelven indefinidas si llamamos al niño.

  • el niño no tiene un constructor, lo que significa que usa el padre constructor.

este es el código:

@Injectable() export class ChildComponent extends ParentComponent { } export class ParentComponent implements OnInit, AfterViewInit, AfterViewChecked { constructor(protected _activitySettingsControlService: ActivitySettingsControlService, protected _changeDetectionRef: ChangeDetectorRef, protected _elemRef: ElementRef, protected _apiService: ApiService) { }

todas las dependencias son undefind de esta manera.

cual puede ser la razon ?


Sin un ejemplo completo, solo podemos adivinar. Considere utilizar lo siguiente como punto de partida para el ejemplo mínimo, completo y verificable solicitado.

Ejemplo de código que muestra la herencia de componentes y la inyección de servicio trabajando juntos:

import { Component, Injectable } from ''@angular/core''; @Injectable() export class SomeDependency { public foo() { return ''bar''; } } @Component({ selector: ''parent-comp'', template: `<h1>Hello from ParentComponent {{name}}</h1>`, providers: [ SomeDependency ] }) export class ParentComponent { public name; constructor(private dep: SomeDependency) { this.name = this.dep.foo(); } } @Component({ selector: ''child-comp'', template: `<h1>Hello from ChildComponent. SomeDependency returned {{name}}</h1>`, providers: [ SomeDependency ] }) export class ChildComponent extends ParentComponent { } @Component({ selector: ''my-app'', template: `<child-comp></child-comp>` }) export class AppComponent { }

Ver este plunker para un ejemplo de trabajo: http://embed.plnkr.co/5VNDF6/

Soy (también) nuevo en el suministro de ejemplos en SO, por lo que podría haber perdido algunas de las mejores prácticas. Con suerte, la gente comentará sobre sugerencias de mejoras.

De nota general, esta herencia componente no es la mejor manera de hacer las cosas. Preferiría la composición sobre la herencia para los componentes. La herencia, si es realmente necesaria, podría ser una mejor opción para los servicios: http://embed.plnkr.co/jWiOTg/