Динамическая вставка кнопок в angular 13
У меня есть родительский компонент, который отправляет объект через ввод дочернему элементу, но у этого объекта есть поле с заголовком и другое поле, которое представляет собой кнопку, содержащую массив.
когда я делаю это так, как показано ниже, заголовок появляется столько раз, сколько он существует, допустим, у меня есть 3 кнопки, в дочернем компоненте заголовок тоже появится 3 раза, это первый пункт.
dados: IHeaderTitlePage = {
title: 'Caption List'
botoes: [
{
name: 'Parametrizações',
icon: 'configuracao_outline',
iconPosition: 'left',
router: '../parametrizacao'
},
{
name: 'Empresas',
icon: 'empresas_outline',
iconPosition: 'left',
router: '/'
},
{
name: 'adicionar',
icon: 'adicionar',
iconPosition: 'left',
router: '../cadTecnico'
}
]
};
<app-header-title-page *ngFor="let dado of dados" [dados]="dado" [titulo]="titulo"></app-header-title-page>
Другой момент заключается в том, что при попытке использовать [routerlink]="[имя переменной]", которая идет вместе с маршрутом, это не работает, выдает ошибку.
Поэтому мне нужно, чтобы заголовок появлялся только один раз, а кнопки отображали столько массивов, сколько существует в поле кнопки, и с функциональностью.
Это шапка страницы, которую я буду использовать на всех, чтобы не повторяться, потому что на одной странице я не передаю кнопки, на другой могу передать одну или две.
И данные всегда будут отправлены родителю, а не от банка.
В дочернем компоненте выглядит так:
<section class="row flex-container">
<article class="col-6">
<div class="menu">
<h3 class="voxel-text-insight-bold voxel-color-text-heading-2" id="titulo">{{titulo}}</h3>
</div>
</article>
<article class="col-6">
<div class="butttons_config">
<button iconPosition="data.iconPosition" [routerLink]="[data.rota]">
<icon>{{data.icon}}</icon>{{data.nome}}
</button>
</div>
</article>
</section>
И, как я уже сказал, при этом генерируется столько строк, сколько поступает от кнопок.
Я попытался передать данные дочернему компоненту, не выполняя действия, как показано ниже:
<app-header-title-page [dados]="dados" ></app-header-title-page>
И внутри самого дочернего компонента выполните for так, как я пробовал ниже:
<section class="row flex-container">
<article class="voxel-col-6">
<div class="menu">
<h3 class="voxel-text-insight-bold voxel-color-text-heading-2" id="titulo">{{dados.nome}}</h3>
</div>
</article>
<article class="col-6">
<div class="butttons_config" *ngFor="let butons of dados">
<button iconPosition="butons.botoes.iconPosition" [routerLink]="['butons.botoes.rota']">
<icon>{{butons.botoes.icon}}</icon>{{butons.botoes.nome}}
</button>
</div>
</article>
</section>
<section class="row flex-container">
<article class="voxel-col-6">
<div class="menu">
<h3 class="voxel-text-insight-bold voxel-color-text-heading-2" id="titulo">{{dados.nome}}</h3>
</div>
</article>
<article class="col-6" *ngFor="let butons of dados">
<div class="butttons_config">
<button iconPosition="butons.botoes.iconPosition" [routerLink]="['butons.botoes.rota']">
<icon>{{butons.botoes.icon}}</icon>{{butons.botoes.nome}}
</button>
</div>
</article>
</section>
<section class="row flex-container">
<article class="voxel-col-6">
<div class="menu">
<h3 class="voxel-text-insight-bold voxel-color-text-heading-2" id="titulo">{{dados.nome}}</h3>
</div>
</article>
<article class="col-6" >
<div class="butttons_config">
<button *ngFor="let butons of dados" iconPosition="butons.botoes.iconPosition" [routerLink]="['butons.botoes.rota']">
<icon>{{butons.botoes.icon}}</icon>{{butons.botoes.nome}}
</button>
</div>
</article>
</section>
ни на экране, ни на консоли ошибку не показывает, однако на экране ничего не отображает, все белое.
В заключение, этот дочерний компонент будет только заголовком страницы, содержащим заголовок страницы и кнопки, если у него есть, например, кнопка регистрации.
Мой CSS, я использую flexbox, где я помещаю заголовок слева и кнопки справа в одну линию.
1 ответ
Исправьте свой роутерСсылка на это
routerLink="{{butons.botoes.rota}}"
или
[routerLink]="butons.botoes.rota"