gpt4 book ai didi

css - Angular 父表单控件 Bootstrap/CSS 不适用于子组件

转载 作者:行者123 更新时间:2023-11-28 19:29:57 24 4
gpt4 key购买 nike

我创建了一个在父组件中使用的自动完成子组件。在父级中,当尝试使用 Bootstrap 表单控件应用验证时,它不会应用于此子组件 - 这是一个带有列表的输入框,尽管它已应用于其他非子控件。

子组件 HTML:

<div class="searching">
<input type="text" class="form-control" (input)="getFilteredData(inputBox.value);" class="form-control" [formControl]="inputBox">
<div id="search" tabindex="0" >
<ul class="suggestionList">
<li *ngFor="let result of filteredResults | async" (click)="onUserSelected(result)" >{{result[displayField1]}} | {{result[displayField2]}} {{result[displayField3]}}</li>
</ul>
</div>
</div>

父组件:

<app-auto-complete formControlName="requestorId" 
[ngClass]="{ 'is-invalid': submitted &&
requestorId.errors }"></app-auto-complete>
<div *ngIf="submitted && f.requestorId.errors" class="invalid-feedback">
<div *ngIf="f.requestorId.errors.required">Requestor ID is required</div>
</div>

子 CSS:

.searching {
width: inherit;
position: relative;
}
.searching input {
margin: 0;
padding: 0;
width: 100%;
height: 30px;
}
.suggestionList {
background-color: #fff;
width: 100%;
position: absolute;
padding: 0;
left: 0;
z-index: 1000;
}
.suggestionList li {
list-style-type: none;
border: 1px solid #c5c5c5;
cursor: pointer;
left: 0;
font-family: Arial,Helvetica,sans-serif;
font-size: 1em;
text-align: left;
}

最佳答案

我有几个解决方法,希望对您有所帮助。

如评论中所述,在父组件装饰器中添加 ViewEncapsulation.None 属性“encapsulation”(与“selector”等级别相同)。请注意,这种方法会使父组件的样式渗透到整个应用程序中,因此请谨慎执行此操作,除非您的父选择器非常具体,例如 .my-specific-parent-selector-which-isnt-gonna -重复

在子组件上使用@Input 属性传递验证 bool 值,并根据传递的Input 直接应用该类。

给parent添加一个.parent-selector .is-invalid选择器,然后在它后面添加一个::ng-deep .parent-selector .is-invalid使特定样式渗透到子类中。请注意,这种方法已被弃用,因此它可能会在未来停止工作(尽管不太可能)

注意:另请注意,您正在将 is-invalid 类应用于选择器。如果您使用 chrome 网络浏览器进行检查,您会发现该选择器通常是您尝试添加类的不同元素。 .. 所以也许你最好的方法是使用输入

关于css - Angular 父表单控件 Bootstrap/CSS 不适用于子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55267865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com