菩提果 發表於 2020-12-8 23:03:00

ts安装和写法 angular安装及使用

<p>1、全局安装</p>
<div class="cnblogs_code">
<pre>npm install -g typescript</pre>
</div>
<p>2、将ts编译成js</p>
<div class="cnblogs_code">
<pre>tsc 文件名.ts   <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">找到文件目录</span></pre>
</div>
<p>注:可能这里会报错&nbsp; 参考下图</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201208202056850-518665400.png"></p>
<p>&nbsp;</p>
<p>ts包容性不错 如果str没加string编译报错,但是可以正确转换成js</p>
<div class="cnblogs_code">
<pre>function abc(person:<span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">){
    </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">hello </span><span style="color: rgba(128, 0, 0, 1)">'</span>+<span style="color: rgba(0, 0, 0, 1)">person
}
let str:</span><span style="color: rgba(0, 0, 255, 1)">string</span> = <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">123</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
console.log(abc(str))</span></pre>
</div>
<p>转换以后</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">function abc(person) {
    </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">hello </span><span style="color: rgba(128, 0, 0, 1)">'</span> +<span style="color: rgba(0, 0, 0, 1)"> person;
}
</span><span style="color: rgba(0, 0, 255, 1)">var</span> str = <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">123</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
console.log(abc(str));</span></pre>
</div>
<p>3、安装angular-cli</p>
<div class="cnblogs_code">
<pre>npm install -g @angular/cli</pre>
</div>
<p>4、创建项目</p>
<div class="cnblogs_code">
<pre>ng <span style="color: rgba(0, 0, 255, 1)">new</span> 项目名字(英文)</pre>
</div>
<p>router 安装和是否用less自己选择</p>
<p>5、运行项目</p>
<div class="cnblogs_code">
<pre>ng serve --open</pre>
</div>
<p>6、项目中平时改动的地方是src里面的app,其他的很少动,package.json是项目的依赖</p>
<p>app.module.ts是根模块&nbsp; 用到的组件都要导入进来且声明</p>
<div class="cnblogs_code">
<pre>import { BrowserModule } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">@angular/platform-browser</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
import { NgModule } </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">@angular/core</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;

import { AppRoutingModule } </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./app-routing.module</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
import { AppComponent } </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">./app.component</span><span style="color: rgba(128, 0, 0, 1)">'</span>; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">导入</span>
<span style="color: rgba(0, 0, 0, 1)">
@NgModule({</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">装饰器 装饰的 class AppModule </span>
<span style="color: rgba(0, 0, 0, 1)">declarations: [
    AppComponent </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">声明</span>
<span style="color: rgba(0, 0, 0, 1)">],
imports: [</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">导入的核心模块</span>
    BrowserModule,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">编译的</span>
<span style="color: rgba(0, 0, 0, 1)">    AppRoutingModule
],
providers: [],</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">自定义的服务,模块</span>
bootstrap: <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">挂在的根组件,就是首页是哪个放那个</span>
<span style="color: rgba(0, 0, 0, 1)">})
export </span><span style="color: rgba(0, 0, 255, 1)">class</span> AppModule { }</pre>
</div>
<p>7、typescript 数据类型</p>
<p>原始数据类型: 数值 布尔 字符串 null undefind</p>
<p><strong>布尔类型定义</strong></p>
<div class="cnblogs_code">
<pre>let isData:boolean = <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">
isData </span>= <span style="color: rgba(0, 0, 255, 1)">false<br>let isData:boolean = Boolean(2)直接调用Boolean是可以的<br></span></pre>
</div>
<p><span style="color: rgba(255, 0, 0, 1)">错误写法:因为new Boolean返回的是一个对象类型</span></p>
<p>let isData:boolean = new Boolean(2)</p>
<p><strong>数值类型定义</strong></p>
<div class="cnblogs_code">
<pre>let num:number = <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
let num16:number </span>= <span style="color: rgba(128, 0, 128, 1)">0xf00a</span><span style="color: rgba(0, 0, 0, 1)">
let nonNum:number </span>=<span style="color: rgba(0, 0, 0, 1)"> NaN
let infiNum:number </span>= Infinity</pre>
</div>
<p><strong>字符串类型定义</strong></p>
<div class="cnblogs_code">
<pre>let lname:<span style="color: rgba(0, 0, 255, 1)">string</span> = <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">joy</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
let age:number </span>= <span style="color: rgba(128, 0, 128, 1)">30</span><span style="color: rgba(0, 0, 0, 1)">;
let box:</span><span style="color: rgba(0, 0, 255, 1)">string</span> =<span style="color: rgba(0, 0, 0, 1)"> `我的年龄是${age}`;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 空值void大多数定义函数没有返回值 ,一般不用于定义变量,因为一旦变量定义为void,赋值只能是undefined或者null</span>
function hello():<span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)">{
    console.log(</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">holle</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">)
}</span></pre>
</div>
<p><strong>null和undefined定义&nbsp; 没什么意义,他们是所有类型的子类型</strong></p>
<p><strong>例如</strong></p>
<pre>let lname:string = 'joy'<span>;</span><br>lname=undefined<br>lname=null</pre>
<div>
<div>//没啥意义</div>
<div>let&nbsp;a:undefined&nbsp;=&nbsp;undefined</div>
<div>a=null</div>
<div>let&nbsp;b:null&nbsp;=&nbsp;null</div>
<div>b=undefined</div>
<div><strong>void类型是不能赋值给其他类型的,虽然他也只有undefined和null</strong></div>
<div>
<p>let lname:string = 'joy';</p>
<p>lname=undefined</p>
<p>let abc:undefined = undefined</p>
<p>let dfe:void = undefined</p>
<p>lname = abc</p>
<p>lname = dfe //这样不允许 因为dfe是void类型</p>
<p><strong>任意值类型 :any用来表示任意值<strong>类型</strong>赋值</strong></p>
<div class="cnblogs_code">
<pre>let jsf:any = <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">abf</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
console.log(jsf.myname) </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">undefined 任意值类型允许访问他任意的属性</span>
jsf = <span style="color: rgba(128, 0, 128, 1)">123</span>

<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 未声明类型的变量</span>
let wfkk1;<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">wfkk1在声明的时候未定义类型,就被定义成任意类型</span>
let wfkk1 = <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">sho</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
let wfkk1 </span>= <span style="color: rgba(128, 0, 128, 1)">123</span><span style="color: rgba(0, 0, 0, 1)">;

let somethis </span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">132</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">somethis虽然没有定义类型,但赋值未字符串。<span style="color: rgba(255, 0, 0, 1)">ts有类型推断规则</span>,会将赋值定义成变量的类型</span>
somethis = <span style="color: rgba(128, 0, 128, 1)">123</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 报错</span></pre>
</div>
<p><strong>联合类型</strong></p>
<p><strong>表示取值可以取多个</strong></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 联合类型</span>
let cat:<span style="color: rgba(0, 0, 255, 1)">string</span>|<span style="color: rgba(0, 0, 0, 1)">number;
cat </span>= <span style="color: rgba(128, 0, 128, 1)">123</span><span style="color: rgba(0, 0, 0, 1)">
cat </span>= <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">猫</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
let cat1:</span><span style="color: rgba(0, 0, 255, 1)">string</span>|number = <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">猫咪</span><span style="color: rgba(128, 0, 0, 1)">'</span>;</pre>
</div>
<p><strong>ts接口&nbsp; 定义接口关键词 interface</strong></p>
<p><strong>接口:行为的抽象。具体的行动由类实现(接口抽象出来的内容) 相当于定义的描述</strong></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">interface</span><span style="color: rgba(0, 0, 0, 1)"> Peason{
    name:String;
    age:Number;
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 一般接口首字母都会大写用接口定义的对象属性不能多写不能少写</span>
let lay:Peason =<span style="color: rgba(0, 0, 0, 1)"> {
    name:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">tom</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">约束tom必须和接口一样的属性</span>
    age:<span style="color: rgba(128, 0, 128, 1)">30</span><span style="color: rgba(0, 0, 0, 1)">
}
let lay1:</span><span style="color: rgba(0, 0, 255, 1)">object</span> =<span style="color: rgba(0, 0, 0, 1)"> {
    name:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">join</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    age:</span><span style="color: rgba(128, 0, 128, 1)">12</span><span style="color: rgba(0, 0, 0, 1)">
}


</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 接口属性可写可不写</span>
<span style="color: rgba(0, 0, 255, 1)">interface</span><span style="color: rgba(0, 0, 0, 1)"> Student{
    name:String;
    age</span>?:Number; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">?说明类型可写可不写</span>
<span style="color: rgba(0, 0, 0, 1)">}

let lack:Peason </span>=<span style="color: rgba(0, 0, 0, 1)"> {
    name:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">abd</span><span style="color: rgba(128, 0, 0, 1)">'</span>,<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">约束tom必须和接口一样的属性</span>
    age:<span style="color: rgba(128, 0, 128, 1)">30</span><span style="color: rgba(0, 0, 0, 1)">
}

</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 多个任意类型可写可不写</span>
<span style="color: rgba(0, 0, 255, 1)">interface</span><span style="color: rgba(0, 0, 0, 1)"> Teacher{
    name: </span><span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
    age</span>?<span style="color: rgba(0, 0, 0, 1)">:number;
    :any //propName是自己随便定义的 string是必须是这个值,不能是number
}
let t1:Teacher </span>=<span style="color: rgba(0, 0, 0, 1)"> {
    name:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">wang</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    age:</span><span style="color: rgba(128, 0, 128, 1)">34</span><span style="color: rgba(0, 0, 0, 1)">,
    school: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">清华</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
}

</span><span style="color: rgba(0, 128, 0, 1)">//</span>
<span style="color: rgba(0, 0, 255, 1)">interface</span><span style="color: rgba(0, 0, 0, 1)"> Cat{
    </span><span style="color: rgba(0, 0, 255, 1)">readonly</span> name:<span style="color: rgba(0, 0, 255, 1)">string</span>;<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">只读属性只能赋值一次,后期不能重复定义,可以获取</span>
    color:<span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">;
    age:number;
}
let c1:Cat</span>=<span style="color: rgba(0, 0, 0, 1)">{
    name: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">mimi</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    color: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">red</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
    age: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> c1.name = 'bo'</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">会报错
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> implements 类实现接口的关键词</span>
<span style="color: rgba(0, 0, 255, 1)">class</span> SmallCat implements Cat{<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">定义一个SmallCat类,继承cat</span>
    name:<span style="color: rgba(0, 0, 255, 1)">string</span> = <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">小猫</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
    color:</span><span style="color: rgba(0, 0, 255, 1)">string</span> = <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">red</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
    age:number </span>= <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">;
    constructor(){</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置构造函数</span>
<span style="color: rgba(0, 0, 0, 1)">
    }
}
let c2 </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> SmallCat()
console.log(c2.name) </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">c2的name也是只读属性,因为继承了cat,不能修改,只能获取</span></pre>
</div>
<p><strong>数组定义类型</strong></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设定数组定义类型</span>
let arr = [<span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">2</span>,<span style="color: rgba(128, 0, 128, 1)">3</span>]<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">普通定义方法

</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 写法一 普通的</span>
let arr1:number[] = [<span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">2</span>,<span style="color: rgba(128, 0, 128, 1)">3</span>]<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">ts定义数组类型,在传入不能是别的类型
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 写法二 数组泛型的定义类型</span>
let arr2:Array&lt;number&gt; = [<span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">2</span>,<span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">]

</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> arr1.push('str')</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">报错

</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 写法三 接口表示数组类型一般不用</span>
<span style="color: rgba(0, 0, 255, 1)">interface</span><span style="color: rgba(0, 0, 0, 1)"> NumArr{
    :number
}
let arr3:NumArr </span>= [<span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">2</span>,<span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">]
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> arr2.push('str')</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">报错</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209095505787-593871880.png"></p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209095524994-1901952437.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>&nbsp;创建组件</strong></p>
<p>ng -g component components/header</p>
<p>会自动创建components/header&nbsp; 根组件也给定义好了,别的页面引用 找header.component.ts里面selector的名字app-header;根组件引用&lt;app-header&gt;&lt;/app-header&gt;</p>
<p>定义类型推荐使用:public stu:string='str'</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209100308558-2048503437.png"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209100616804-494556254.png"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209100640692-1042117754.png"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209102059795-750227278.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209102538551-1842285097.png"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209102612630-4619285.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209103207884-260904566.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209103235788-1116445454.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209103719272-935042444.png"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209104302013-1051576619.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209104317395-731527555.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209104532802-313460729.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209104606344-190176102.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209104720256-163929821.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209104855268-1748514002.png"></p>
<p>组件引入图片</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209115209782-1316698109.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209115345174-66271600.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209115626224-1510425739.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209115911489-834653411.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209115848744-1337129908.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209120119621-1039406895.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209120259691-2113388514.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209120609025-608403580.png"></p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209120711009-1976924824.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209120925126-1385159372.png"></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">方法直接不加逗号分号&nbsp; &nbsp;</span></strong></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209121327447-337550182.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209122450101-1663963300.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209122750517-1827780290.png"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209123106692-1907078887.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209123127907-1199662546.png"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209134826772-1944257389.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209135135527-1910736127.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209140402328-796442708.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209140458273-184626533.png"></p>
<p>&nbsp;</p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>搜索记录功能 todolist</strong></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209142546006-563288473.png"></strong></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209142626824-1170002660.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209143804514-1033589860.png"></strong></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209143727840-19950235.png"></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">数据持久化&nbsp; 刷新不变化</span></strong></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209144057560-22833290.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209144725767-321533351.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209145211702-1907646484.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209145955890-270453177.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209150114297-809901836.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209150150892-1274528816.png"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209150332047-1643063862.png"></p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>&nbsp;dom侧边栏动画</strong></span></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209153519575-1964506316.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209153626127-1454869792.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209153652252-1636098234.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209154908261-1283861087.png"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209154958612-1111900694.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<span style="color: rgba(255, 0, 0, 1)"><strong>获取子组件方法(viewchild)</strong></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209155941943-25344761.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209160000739-1658199817.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209160025682-534392606.png"></strong></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>父子组件传值</strong></span></p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209161418334-1260319456.png"></strong></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209161429850-154408055.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209182012428-657977959.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209182055649-193249745.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209182159247-1641170021.png"></p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">生命周期函数&nbsp; 有init的都触发一次</span></strong></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209183341823-340068554.png"></p>
<p>封装异步请求</p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209205053491-760542636.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209205125223-774661735.png"></p>
<p>&nbsp;</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209205307625-1436187494.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209205329031-1181524188.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209205516321-1646379056.png"></p>
<p>多次执行</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209205609761-484958738.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209210117138-1966385314.png"></p>
<p>&nbsp;</p>
<p>&nbsp;返回偶数</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209210314229-1720607268.png"><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209210439668-310495612.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209210518722-1210722362.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209210815348-1287269363.png"></p>
<p>&nbsp;</p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">&nbsp;请求</span></strong></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209211138975-590491382.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209211224580-1489010959.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209211647791-487006522.png"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209211742441-1971629845.png"></p>
<p>&nbsp;</p>
<p>jsonp跨域</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209212840120-308520308.png"></p>
<p>router路由</p>
<p><img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209215523577-378001216.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/930484/202012/930484-20201209215430529-1569850336.png"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="color: rgba(255, 0, 0, 1)"><strong>&nbsp;</strong></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="text-align: left">&nbsp;</p>
</div>
</div><br><br>
来源:https://www.cnblogs.com/yaoling/p/14106208.html
頁: [1]
查看完整版本: ts安装和写法 angular安装及使用