动态地向元素添加类和关联的样式

时间:2019-09-10 14:16:10

标签: angular typescript

我正在尝试对ng-select进行样式设置,可能会有多个选择,并且我想动态更改其子元素样式之一,以便可以根据父元素的Input计算出最大高度。 我需要从ng-select组件中准确设置“ .ng-value-container”类的样式。

我尝试通过ElementRef,querySelector进行此操作,并且正在寻找一种找到其子级的方法,因此通过ElementRef,我可以更改其样式

Ng select看起来像这样,所以我不能只是在ts文件中带有变量的组件上添加样式。

<ng-select class="multi-select placeholder-select" [class.required-border]="required"
    [searchable]="searchable" [(items)]="items" [searchFn]="searchFn" [closeOnSelect]="closeOnSelect"
    [multiple]="multiple" [clearable]="false" [bindLabel]="bindLabel" (focus)="onFocus()" (focusout)="onFocus()"
    (search)="onSearch($event)" (change)="onChange($event)" [(ngModel)]="chosenOption" [notFoundText]="notFoundText"
    #select>
</ng-select>

我希望类“ .ng-value-container”的此内部元素的最大高度例如在输入为3时为150px,在输入为4时为200px,如果有更多选定项,则元素为可滚动。

1 个答案:

答案 0 :(得分:1)

在找到任何答案之前,我已经找到了该问题的解决方案,因此,如果有人遇到相同的问题,我将在此处发布。

首先,需要添加对元素(#name)的引用,例如:

const mockStore = () => ({
    objectId: '123',
    objects: {},
})

test('should select the content of the table', () => {
    const result = selectDetailsObject(mockStore)
    expect(result.objects).toBe()
})

然后使用ViewChild批注在您的逻辑中获取此元素。

//create a json object to hold the json elements
JsonObject jsonElements = new JsonObject();
jsonElements.put("name","Luis");
jsonElements.put("phoneNumber","526677777777");
//now create another json object to hold the json element created
JsonObject jsonMain = new JsonObject();
jsonMain.put("person",jsonElements);

并添加end get元素的子元素,并在ngAfterViewInit方法中指定maxHeight。 就我而言,是这样的:

<ng-select #name></ng-select>