Angulaire 4 s'étendent de la base de composant
J'ai un Composant de Base qui est prolongée par son enfant, mais lorsque nous créons une nouvelle Composante Angulaire à l'aide angulaires-cli, il crée des fichiers html et css, mais je ne vais pas utiliser ces fichiers à partir du composant de base.
Est-il un moyen de créer un Composant de Base, sans html et css?
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector: 'app-base',
templateUrl: './base.component.html', //I dont need this
styleUrls: ['./base.component.css'] ////I dont need this
})
export class BaseComponent implements OnInit {
constructor() {}
ngOnInit() {}
}
import { Component } from '@angular/core';
import { BaseComponent } from '../base/base.component';
@Component({
selector: 'app-child',
templateUrl: './child.component.html',
styleUrls: ['./child.component.css']
})
export class ChildComponent extends BaseComponent {
constructor() {
super();
}
ngOnInit() {
}
}
- Omettre
@Component
annotation dans le composant de base. Mais je soupçonne que vous pourriez être en train de faire quelque chose de mal, en général. Pourquoi voulez-vous d'avoir un composant de base en premier lieu? - Parce que je veux partager certaines des variables et des méthodes qui sont communs à tous les composants enfants.
- Merci, maintenant ça fonctionne. J'ai enlevé @Composant et de le retirer à partir de déclarations de module.
- Je recommanderais un service global que vous importez dans chaque composante, beaucoup plus propre
- appelez-vous fournir un exemple?
- stackoverflow.com/questions/43991306/... ce serait un excellent exemple de ce que je veux dire, il y
- Je vous suggère d'utiliser un composant de base de la classe, mais uniquement si toutes les sous-classes sont en cours pour utiliser toutes les méthodes et les champs définis dans la classe de base. Sinon vous allez vous retrouver avec beaucoup de code mort quand il est compilé en JS.
- Pouvez-vous nous expliquer ce que vous entendez par code mort? Je crois qu'il ya une raison pourquoi nous avons héritage. Je ne comprends pas pourquoi aujourd'hui Angulaire et de Réagir de la bibliothèque des auteurs ne se soucient pas tant que ça!
Vous devez vous connecter pour publier un commentaire.
Depuis la classe de base n'a pas besoin d'être instancié sur son propre, c'est la classe abstraite et n'a pas besoin d'avoir
@Component
décorateur.Si il a des dépendances, et il ya une chance que
constructor
sera omis dans les classes enfant et en a hérité, de la classe de base doit avoir@Injectable
décorateur:@Injectable()
si la classe de base n'a pas de dépendances.@Injectable()
. Pourquoi a-t-il? Est-il documenté quelque part officiellement?