Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

418
Views
¿Cómo puedo editar el contenido o los estilos de un componente reutilizado (reutilizable) sin cambiar el otro en angular?

Tengo un componente llamado componente de pie de página de búsqueda que estoy usando como barra de búsqueda y como pie de página. Quiero cambiar un poco el contenido y los estilos del pie de página sin afectar la barra de búsqueda. ¿Cómo puedo lograr esto?

 <app-navbar></app-navbar> <router-outlet></router-outlet> <app-search-footer></app-search-footer> //this needes content and styles updating

uso el componente de pie de página de búsqueda dentro del componente de la barra de navegación y en mi HomeComponent como puede ver

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Puede actualizar los estilos del componente secundario a través del componente principal utilizando lo siguiente,

  • La ::ng-deep . Al aplicarlo a cualquier regla CSS, se deshabilitó completamente la encapsulación de vista para esa regla. Para aplicar el estilo especificado al componente actual y sus descendientes, agregue el selector :host antes ::ng-deep , ya que sin él los estilos aplicados pueden pasar a otros componentes.
  • Aplicar ViewEncapsulation.None dentro del componente en el que se carga el componente secundario.

Por lo tanto, utilizando los enfoques mencionados anteriormente, puede modificar los estilos para app-search-footer como se muestra en los fragmentos de código a continuación,

  • Usando la ::ng-deep ,

En el archivo componente.css,

 ::host ::ng-deep app-search-footer { /* Add required CSS rules */ }
  • Uso ViewEncapsulation.None

En el archivo componente.ts,

 import { Component, ViewEncapsulation, OnInit } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: '<div class="container"><app-search-footer></app-search-footer></div>', styleUrls: ['`.container .app-search-footer-container { /* Required CSS rules */ }`'], encapsulation: ViewEncapsulation.None }) export class Component implements OnInit { ngOnInit(): void { } }
over 4 years ago · Santiago Trujillo Report

0

Puede, por ejemplo, usar Input para controlar esto como

 <app-search-footer version='search'></app-search-footer>

En el componente:

 @Input() version: 'search' | 'footer' = 'footer';

En la plantilla de componentes en los lugares respectivos:

 class="some-element {{version}}"

En el css (scss en este caso) por ejemplo:

 .some-element { &.search { background-color: red; } &.footer { background-color: green; } }

La mejor manera de hacer esto, por supuesto, también depende de lo que se debe cambiar (por ejemplo, si se trata de todo el componente o de partes muy específicas).
Si es el componente completo, también podría simplemente hacer <app-search-footer class='search'></app-search-footer> .

Hay bastantes maneras de lograr cosas como esta antes de tener que depender de :host ::ngdeep .

over 4 years ago · Santiago Trujillo Report

0

además, si desea cambiar los datos en un solo componente sin afectar al otro, también puede usar @Input decoratos para lograrlo

pie de página de búsqueda de aplicaciones

este es mi panel de búsqueda <app-search-footer> que voy a usar también como pie de página pero con algunos ajustes

además

este es también mi componente <app-search-footer> pero aquí lo estoy usando como pie de página y, como puede ver en la imagen, agregué una nueva imagen de logotipo de regla horizontal y tres párrafos nuevos (Términos de uso, Política de privacidad y Acerca de) Nosotros) hice esto agregando estas variables Input() en mi archivo componente.ts de pie de página de búsqueda

 @Input() termsOfUse = ''; @Input() privacyPolicy = ''; @Input() aboutUs = ''; @Input() hr: boolean = false; @Input() footerImage = '';

en mi archivo html agregué estos

 <img src="{{footerImage}}" class="brand" alt=""> <hr style="color: #ffffff;" *ngIf="hr"> <p class="footer-pargraphs">{{termsOfUse}}</p> <p class="footer-pargraphs">{{privacyPolicy}}</p> <p class="footer-pargraphs">{{aboutUs}}</p>

cuando reutilicé este componente como pie de página, solo vinculé mis datos a las entradas del componente de pie de página de búsqueda así

 <app-search-footer [termsOfUse]="'Terms of Use'" [hr]=true [footerImage]="'assets/download.png'" [privacyPolicy]='"Privacy Policy"' [aboutUs]="'About us'" *ngIf="!collapsed" ></app-search-footer>

y pude modificar el pie de página sin afectar mi panel de búsqueda. La única desventaja de esto es que en su componente base (pie de página de búsqueda en mi caso) habrá elementos con valores vacíos y, por lo tanto, habrá espacio vacío en su DOM.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!