#angular #angular-material #angular-library
#angular #angular-материал #angular-библиотека
Вопрос:
Я хотел бы показать значения параметров mat-option на основе строки, которая была отправлена из родительского компонента в дочерний с использованием @Input.
Пожалуйста, найдите приведенный ниже блок кода
cdropdown.component.ts
@Componenet({
selector: 'mat-dropdown',
templateUrl: 'mat-dropdown.component.html',
styleUrls: ['mat-dropdown.componenet.css']
})
export class dropDownComponent implements OnInit {
constructor(){}
@Input() selectFormControl : FormControl;
@Input() options : Object[];
@Input() OptionValue: any;
}
cdropdown.component.html
<mat-select [formControl]="selectFormControl" [placeholder]="placeholder">
<mat-option *ngFor="let option of options" [value]="option">
{{option.optionvalue}}
</mat-option>
</mat-select>
я создаю общий компонент для параметра mat-select . поэтому я передаю значение для параметра в виде списка объектов. Ключ «optionvalue» для опции может отличаться. итак, я хотел бы определить, какой ключ следует использовать для опции mat.
Теперь у меня есть {{option.optionvalue}}. я должен отправить строку ‘optionvalue’ из родительского компонента, используя @Input. возможно ли это, пожалуйста, посоветуйте.
parentcomponent
options : object[] = [
{
key:1,
optionValue:data1
},
{
key:2,
optionValue:data2
}
]
** родительский html **
<mat-dropdown [options]= "options" ></mat-dropdown>
Ответ №1:
Если вы хотите передать свойство, которое будет использоваться для значения параметра, через родительский компонент, вы можете использовать следующее выражение {{option[optionValue]}}
в вашем шаблоне.
Передайте строку свойства следующим образом:
@Input() optionValue: string;
Комментарии:
1. я пробовал, как указано выше, но выпадающий список отображается как пустой. пожалуйста, посоветуйте
2. Вы убедились, что имя переменной правильное? В вашем примере он всегда пишется по-разному. Входные данные есть
OptionValue
, в шаблоне они естьoptionvalue
и в вашем массиве они естьoptionValue
. Может быть, создать stackblitz?3. Теперь он работает. проблема заключалась в орфографической ошибке. Большое спасибо
Ответ №2:
Вы могли бы @Input
указать имя ключа.
Родительский
.html
<mat-dropdown optionValue="optionvalue">
Дочерний
.html
...
{{option[optionValue]}}
...
.ts
@Input() optionValue: string;
Комментарии:
1. я попробовал аналогичное решение, приведенное выше. но выпадающий список отображается как пустой. пожалуйста, посоветуйте