当前位置: 首页 > news >正文

[Angular] 笔记 16:模板驱动表单 - 选择框与选项

油管视频: Select & Option (Template Driven Forms)

Select & Option

在这里插入图片描述
pokemon.ts 中新增 interface:

export interface Pokemon {id: number;name: string;type: string;isCool: boolean;isStylish: boolean;acceptTerms: boolean;
}// new interface
export interface PokemonType {key: number;value: string;
}

修改 pokemon-template-form.component.ts:

import { Component, OnInit } from '@angular/core';
import { Pokemon, PokemonType } from '../models/pokemon';
import { PokemonService } from '../services/pokemon.service';@Component({selector: 'app-pokemon-template-form',templateUrl: './pokemon-template-form.component.html',styleUrls: ['./pokemon-template-form.component.css'],
})
export class PokemonTemplateFormComponent implements OnInit {pokemon!: Pokemon;// create dropdown for Pokemon typepokemonType: PokemonType[] = [{key: 0,value: 'Fire',},{key: 1,value: 'Water',},];constructor(private pokemonService: PokemonService) {}toggleIsCool(object: any) {console.log(object);this.pokemon.isCool = !this.pokemon.isCool;}ngOnInit() {this.pokemonService.getPokemon(1).subscribe((data: Pokemon) => {this.pokemon = data;});}
}

在 HTML 中显示,pokemon-template-form.component.html:

<form #form="ngForm">Pokemon Name:<input type="text" [(ngModel)]="pokemon.name" name="name" /><label><inputtype="radio"name="isCool"[value]="true"#pokemonName="ngModel"[ngModel]="pokemon.isCool"/>Pokemon is cool?</label><label><inputtype="radio"name="isCool"[value]="false"[ngModel]="pokemon.isCool"(ngModelChange)="toggleIsCool($event)"/>Pokemon is NOT cool?</label><label><inputtype="checkbox"name="acceptTerms"[(ngModel)]="pokemon.acceptTerms"/>Accept Terms?</label><label>Pokemon Type:<select name="pokemonType" [ngModel]="pokemon?.name"><option*ngFor="let type of pokemonType"[value]="type.key"[selected]="type.value === pokemon.type">{{ type.value }}</option></select></label>
</form>
<div>MODEL: {{ pokemon | json }} FORM: {{ form.value | json }} ERROR:<div *ngIf="!pokemonName.pristine">NOT PRINSTINE ANYMORE IT IS DIRTY!</div>
</div>

选择框与下拉列表正常工作:

在这里插入图片描述
如果要发送值给后端,那么将 HTML 中的 [value]="type.key" 改为 [value]="type.value"

在这里插入图片描述

相关文章:

  • JavaScript学习之旅——初识
  • linux下超级程序!在linux界面实现类图像化界面的操作体验!
  • Zookeeper实现分布式锁和注册中心
  • 基于SpringBoot的图书电子商务网站的设计与实现
  • thinkphp6入门(14)-- 多关联模型查询
  • 项目经验简单总结
  • SpringValidation自定义注解以及分组校验
  • 第6章-第1节-Java中基本数据类型的包装类
  • 松松2023年工作汇报
  • 通过data恢复postgresql
  • 【蓝桥杯】比赛大纲整理
  • RK3568驱动指南|第九篇 设备模型-第95章 创建属性文件并实现读写功能实验1
  • 详解卡尔曼滤波(Kalman Filter)
  • vue常见面试题
  • C++:第十一讲DFS深搜
  • Android 架构优化~MVP 架构改造
  • Django 博客开发教程 8 - 博客文章详情页
  • Java 内存分配及垃圾回收机制初探
  • JavaScript设计模式与开发实践系列之策略模式
  • js面向对象
  • log4j2输出到kafka
  • opencv python Meanshift 和 Camshift
  • SSH 免密登录
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • zookeeper系列(七)实战分布式命名服务
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 工作手记之html2canvas使用概述
  • 基于组件的设计工作流与界面抽象
  • 记录:CentOS7.2配置LNMP环境记录
  • 聊一聊前端的监控
  • 你不可错过的前端面试题(一)
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • ​学习一下,什么是预包装食品?​
  • (14)Hive调优——合并小文件
  • (第二周)效能测试
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (十一)c52学习之旅-动态数码管
  • (算法二)滑动窗口
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .NET Core中Emit的使用
  • .net framework4与其client profile版本的区别
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net Stream篇(六)
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET基础篇——反射的奥妙
  • .NET上SQLite的连接
  • @Documented注解的作用
  • @Mapper作用
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [C语言]编译和链接
  • [delphi]保证程序只运行一个实例
  • [Excel] vlookup函数