Этот вопрос относится к угловым тестам.Я ищу короткий способ найти компоненты по значениям, которые они получают через привязку данных @Input()
.
У меня есть следующий дочерний компонент MyComponent
.Который имеет @Input() property called
id`:
@Component({
selector: 'my-component,
template: `... something ...`
})
class MyComponent {
@Input() id: string;
}
Я использую этот компонент внутри ParentComponent
и передаю различное ids
через свойство @Input()
:
...
<my-component [id]="first-comp"></my-component>
<my-component [id]="second-comp"></my-component>
...
СейчасУ меня есть тестовый модуль для ParentComponent
.Если я хочу найти два компонента по их id
, я делаю это:
let firstComponent: MyComponent;
let secondComponent: MyComponent;
const myComponents = debugElement.query(By.css('my-component'));
for (const myComponent of myComponents) {
if (myComponent.componentInstance.id === 'first-comp') {
firstComponent = myComponent.componentInstance;
} else if (myComponent.componentInstance.id === 'second-comp') {
secondComponent = myComponent.componentInstance;
}
}
Этот код не очень легко написать.Предоставляет ли angular такую функцию, как сделать это более простым способом без цикла for?Примерно так:
const firstComponent = debugElement.query(By.css('my-component[id="first-component"]'));
const secondComponent = debugElement.query(By.css('my-component[id="second-component"]'));
Спасибо за помощь.