Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

576
Visualizações
Elemento de ocultación angular del componente secundario

ya que no puedo encontrar ninguna opción directa, tal vez alguien me ayude aquí. El problema es que tengo un proyecto Angular con la siguiente estructura:

 <app-navigation></app-navigation> <router-outlet></router-outlet> <app-footer></app-footer>

y hay un caso en el que solo un componente no debería tener la barra de navegación visible. ¿Es posible ocultar <app-navigation> desde el componente <router-outlet> ?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Puede crear un servicio compartido que se inyecte tanto en el componente de la aplicación como en cualquier otra página que necesite ocultar el componente de navegación.

Ejemplo de un servicio compartido que expone una alternancia observable:

mostrar.servicio.ts

 @Injectable({ providedIn: 'root' }) export class DisplayService { public constructor() { this.showNavigation$ = this.showNavigation.asObservable(); } public showNavigation$: Observable<boolean>; private showNavigation: Subject<boolean> = new Subject<boolean>(); public setNavigationVisibility(visible: boolean): void { this.showNavigation.next(visible); } }

Este servicio expone un observable al que se puede suscribir y un método para emitir valores a través del observable.

Los componentes en los que desea ocultar la barra de navegación ocultarían la barra de navegación en ngOnInit y la mostrarían nuevamente en ngOnDestroy .

componente.ts

 @Component({ selector: 'app-hide-navigation', template: `<p>COMPONENT</p>`, }) export class HideNavigationComponent implements OnInit, OnDestroy { constructor(private displayService: DisplayService) { } ngOnInit(): void { this.displayService.setNavigationVisibility(false); } ngOnDestroy(): void { this.displayService.setNavigationVisibility(true); } }

El componente de su aplicación podría suscribirse al observable y establecer la visibilidad en consecuencia:

aplicación.componente.ts

 @Component({ selector: 'my-app', templateUrl: './app.component.html', styleUrls: ['./app.component.css'], }) export class AppComponent { constructor(private displayService: DisplayService) {} showNavigation = true; private destroyed: Subject<void> = new Subject<void>(); ngOnInit(): void { this.displayService.showNavigation$ .pipe(takeUntil(this.destroyed)) .subscribe((visible: boolean) => { this.showNavigation = visible; }); } ngOnDestroy(): void { this.destroyed.next(); } }

aplicación.componente.html

 <app-navigation *ngIf="showNavigation"></app-navigation> <router-outlet></router-outlet>

El beneficio de usar un observable como este es que puede combinarlo fácilmente con una estrategia de detección de cambios OnPush en lugar de enlazar directamente con una propiedad boolean pública en el servicio.

Demostración de Stackblitz: https://stackblitz.com/edit/angular-ivy-dk5gi8?file=src/app/app.component.html

over 4 years ago · Santiago Trujillo Relatório

0

Puedes intentar algo como esto:

Agregue una condición a la etiqueta app-navigation , sobre cuándo debe mostrarse. El valor puede ser de cualquier servicio.

 <app-navigation *ngIf="appNavigationService.show"></app-navigation>

Y, en el componente del que no desea mostrar la barra de navegación, dentro de <router-outlet> puede establecer el valor de ese campo en la clase de servicio como false . Y una vez que salga del componente, probablemente en ngOnDestroy pueda volver a establecerlo en true . Y también, tener el valor como true por defecto.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda