å¨ Angular 21 ä¸è®¾ç½® Select éé¡¹çæ ·å¼ | AIçæåç¿»è¯
å¨ Angular 21ï¼ä»¥åç°ä»£ Angularï¼ä¸ï¼è½ç¶ ngClass ä»ç¶å¯ç¨ï¼ä½æ¡æ¶å·²ç»è½¬åä½¿ç¨ native class bindingsï¼ä»¥è·å¾æ´å¥½ç performance å type safetyã
ç±äºæ å HTML <select> ä»
å
è®¸å¨ <option> å
ç´ ä¸è®¾ç½®æ ·å¼ï¼å³ä¾¿å¦æ¤ï¼CSS æ¯æä¹åæµè§å¨éå¶ï¼ï¼å¤çæ¤é®é¢çæä½³æ¹æ³æ¯å¨å¾ªç¯æé´å° class ç´æ¥ç»å®å°æ¯ä¸ª optionã
æ¹æ¡ 1ï¼ä½¿ç¨ç°ä»£ Class Bindingsï¼æ¨èï¼
ä½ å¯ä»¥ä½¿ç¨ @for control flow åç´æ¥ç [class] ç»å®ï¼è䏿¯æ§ç [ngClass]ãå¨ Angular 21 ä¸ï¼è¿ç§æ¹å¼æ´ç®æ´ãæ´å¿«éã
<select>
@for (item of options; track item.id) {
<option [value]="item.value" [class]="item.categoryClass">
{{ item.label }}
</option>
}
</select>
æ¹æ¡ 2ï¼å° [ngClass] ç¨äºå¤æé»è¾
å¦æä½ éè¦æ ¹æ®æ¡ä»¶åºç¨å¤ä¸ª classï¼ä¾å¦ï¼âä»
å½ status 为 âurgentâ æ¶åºç¨ high-priorityâï¼ï¼[ngClass] ä»ç¶é常æç¨ã
<select>
@for (opt of dropdownOptions; track opt.id) {
<option
[value]="opt.id"
[ngClass]="{
'text-red': opt.isUrgent,
'bg-blue': opt.type === 'primary',
'custom-padding': true
}">
{{ opt.name }}
</option>
}
</select>
ä¸å®¶æç¤ºï¼Dropdown çå±éæ§
æ å HTML <select> å <option> å
ç´ æ¯åºäºåçé¾ä»¥è®¾ç½®æ ·å¼ï¼é¤äºé¢è²ååä½ï¼éå¸¸æ æ³æ´æ¹æ´å¤å
容ï¼ã
å¦æä½ éè¦âæ´å¥½çæ§å¶æâï¼ä¾å¦å¨ dropdown 䏿·»å 徿 ãèªå®ä¹é´è·æå¤æå¸å±ï¼ï¼è¯·èèä½¿ç¨ Angular Ariaï¼v21 æ°å¢ï¼æ CDK Listboxãå®ä»¬æä¾ âheadlessâ é»è¾ï¼å
è®¸ä½ æå»ºä¸ä¸ªå¤è§å div ä½è¡ä¸ºå select ç dropdownã
æ¹æ¡å¯¹æ¯
ä½ éè¦æåä½ å±ç¤ºå¦ä½ä½¿ç¨æ°ç Angular Aria Listbox æ¥å®ç°å®æ´ç CSS æ§å¶åï¼
