双向数据绑定

1-1 app.module.ts中配置

  1. //1.在app.module.ts根目录中导入并注册
  2. import {FormsModule} from '@angular/forms'
  3. @NgModule({
  4. ...
  5. imports: [
  6. ...
  7. FormsModule //注册
  8. ],
  9. ...
  10. })

在组件中使用

  1. //.component.ts
  2. export class HeaderComponent implements OnInit {
  3. public msg:string='hello world';
  4. ...
  5. }
  6. }
  7. //.html
  8. <input type="text" [(ngModel)]="msg"> // [(ngModel)]="msg" 快捷键ng就可以出来

.(change)和(ngModelChange)

最好使用ngmodelChange

1 (change)

  1. //.html
  2. <input type="text" [(ngModel)]="msg" (change)="handleChange($event)">
  3. //.ts
  4. handleChange(e){
  5. console.log(e.target)
  6. }

2 (ngModelChange)

只要那个modelChange中的内容改变时就会触发

(ngModelChange)要放在[(ngModel)]后面
  1. //.html
  2. <input type="text" [(ngModel)]="msg" (ngModelChange)="handleChange()">
  3. //.ts
  4. handleChange(){
  5. console.log(1)
  6. }

导入数据到本地

1在组件下面新建一个data.ts文件,将数据放进去

  1. var cartList:object[]= (数据)
  2. export default cartList; //导出一下

2在要使用数据的组件的ts文件中导入data.ts

  1. import { Component, OnInit } from '@angular/core';
  2. import cartList from './data'; //导入
  3. ...
  4. export class HeaderComponent implements OnInit {
  5. public msg:string='hello world';
  6. public checked:boolean=true;
  7. public cartList:any=cartList; //定义数据类型
  8. constructor() {
  9. console.log(cartList) //可以打印看一下有没有
  10. }
  11. ...
  12. }

3 html页面中使用

  1. <div *ngFor="let item of cartList">
  2. {{item.productName}}
  3. </div>

泛型

泛型:任意类型

  1. class Person<T>{
  2. emit(msg:T){
  3. console.log(msg);
  4. }
  5. }
  6. var p=new Person<string>();
  7. p.emit("msg")
  1. //通俗理解:泛型就是解决泛类,接口,方法的复用性。以及对不特定数据类型的支持
  2. // function getData(value:any){
  3. // console.log(value)
  4. // }
  5. //局限性 只能传入特定的类型
  6. //any 放弃了类型检查
  7. //既然有类型检查,又想传想传什么就传什么
  8. //任意类型:任意,类型检查
  9. function getData<T>(value:T){
  10. console.log(value)
  11. }
  12. getData<string>("hello")
  13. getData<number>(113);

装饰器

  1. // 装饰器 在不修改类的前提下对类的拓展
  2. function addName(target:any){
  3. target.prototype.name = "cheng"
  4. }
  5. @addName
  6. class Person{
  7. getData(){
  8. console.log("hello world")
  9. }
  10. }
  11. var p:any= new Person();
  12. console.log(p.name);