使用antd的Select组件,Cascader组件,DatePicker等下拉选项必须要添加的getPopupContainer(解决选项框随页面滚动分离问题)

getPopupContainer 菜单渲染父节点。默认渲染到 body 上,如果你遇到菜单滚动定位问题,试试修改为滚动的区域,并相对其定位。

这个属性,看似不重要的属性,却起着重大的作用。

效果图:

当数据比较多的,可以滚动的时候。点击选择框,滑动滚轮

没有添加这个属性的时候:

当没有这个属性的时候 随着滚动 选项会和选择框分离。

当添加这个属性后:

点击后滚动就不会分离

如何添加:

<span className={styles.SeachMargin} id='Select'>

<Select style={{ width: 120 }} onChange={handleSelect} allowClear defaultValue="请选择状态"

getPopupContainer={()=>document.getElementById('Select')}

>

在下拉框的父节点设置一个id,在下 拉框中getPopupContainer={()=>document.getElementById(父节点设置的id)   

使用getPopupContainer属性: select组件,Cascader组件    

使用getCalendarContainer属性: DatePicker组件

在antd的每个组件api中都有说明是使用getPopupContainer还是getCalendarContainer

、、、、、2019.04.24更新、、、、、

现在antd又给出简单的处理方式:

1,getPopupContainer属性的,可以直接使用 getPopupContainer={triggerNode => triggerNode.parentNode}

2,getCalendarContainer属性的,默认为 body 上新建 div,可能不需要设置这个属性。如果需要设置可以按照上文中那样设置

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------如遇到问题:+WX:WAZJ-0508,及时联系---------------------------------------------------------------------------------------------------------------------------------------------------

好的!我可以为您提供一个简单的示例程序,它使用了ng-zorro-antd组件库中的七种组件: 1. Button(按钮) 2. Input(输入框) 3. Checkbox(复选框) 4. Radio(单选框) 5. Select下拉选择框) 6. Datepicker(日期选择器) 7. Table(表格) 以下是示例程序的代码: app.module.ts ```typescript import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { NzButtonModule, NzInputModule, NzCheckboxModule, NzRadioModule, NzSelectModule, NzDatePickerModule, NzTableModule } from 'ng-zorro-antd'; import { AppComponent } from './app.component'; @NgModule({ imports: [ BrowserModule, FormsModule, BrowserAnimationsModule, NzButtonModule, NzInputModule, NzCheckboxModule, NzRadioModule, NzSelectModule, NzDatePickerModule, NzTableModule ], declarations: [ AppComponent ], bootstrap: [ AppComponent ] }) export class AppModule { } ``` app.component.ts ```typescript import { Component } from '@angular/core'; interface User { name: string; age: number; gender: string; } @Component({ selector: 'my-app', templateUrl: './app.component.html', styleUrls: [ './app.component.css' ] }) export class AppComponent { users: User[] = [ { name: '张三', age: 20, gender: '男' }, { name: '李四', age: 25, gender: '女' }, { name: '王五', age: 30, gender: '男' }, ]; selectedUser: User = null; newUser: User = { name: '', age: null, gender: '' }; genderOptions = [ { label: '男', value: '男' }, { label: '女', value: '女' } ]; selectUser(user: User): void { this.selectedUser = user; } addUser(): void { this.users.push(this.newUser); this.newUser = { name: '', age: null, gender: '' }; } deleteUser(user: User): void { const index = this.users.indexOf(user); if (index >= 0) { this.users.splice(index, 1); this.selectedUser = null; } } } ``` app.component.html ```html <h1>用户管理</h1> <div style="display: flex; flex-direction: row;"> <div style="flex: 1;"> <nz-table [nzData]="users" [nzFrontPagination]="false" [nzBordered]="true" [nzSize]="'middle'" (nzClick)="selectUser($event)"> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>性别</th> </tr> </thead> <tbody> <tr *ngFor="let user of users"> <td>{{ user.name }}</td> <td>{{ user.age }}</td> <td>{{ user.gender }}</td> </tr> </tbody> </nz-table> <div style="margin-top: 16px;"> <button nz-button [nzType]="'primary'" [disabled]="selectedUser === null" (click)="deleteUser(selectedUser)">删除</button> </div> </div> <div style="flex: 1; margin-left: 16px;"> <form #userForm="ngForm"> <div> <label>姓名:</label> <input nz-input [(ngModel)]="newUser.name" name="name" required> </div> <div> <label>年龄:</label> <input nz-input [(ngModel)]="newUser.age" name="age" type="number" required> </div> <div> <label>性别:</label> <nz-radio-group [(ngModel)]="newUser.gender" name="gender" required> <label nz-radio *ngFor="let option of genderOptions" [nzValue]="option.value">{{ option.label }}</label> </nz-radio-group> </div> <div style="margin-top: 16px;"> <button nz-button [nzType]="'primary'" [disabled]="!userForm.valid" (click)="addUser()">添加</button> </div> </form> </div> </div> ``` 这个示例程序演示了如何使用ng-zorro-antd组件库中的七种组件来实现一个简单的用户管理功能,包括显示用户列表、选择用户、添加用户和删除用户。您可以参考这个示例程序来编写自己的Angular程序,使用ng-zorro-antd组件库中的各种组件来实现您想要的功能。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zeng__Y1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值