淺談Angular7 項(xiàng)目開發(fā)總結(jié)
由于公司需要,開始學(xué)習(xí)angular,這個(gè)傳聞中學(xué)習(xí)曲線及其陡峭的前端框架,并開始寫第一個(gè)用angular的項(xiàng)目,截止今天初步完成現(xiàn)有需求,顧在此做一次遇到問題的總結(jié),以便知識(shí)的掌握。
一、在angular項(xiàng)目中,如何使用錨點(diǎn)
在常規(guī)項(xiàng)目中,使用錨點(diǎn)用來做"智能"定位效果時(shí),只需這么寫:
<a href="#test" rel="external nofollow" >走你</a> <div id="test">被定位區(qū)域</div>
但是在ng中,a標(biāo)簽中的href屬性會(huì)自動(dòng)的使用路由機(jī)制,最后的結(jié)果會(huì)被當(dāng)成跳轉(zhuǎn)的路由地址,具體的原因有待進(jìn)一步考證,反正最后的結(jié)果就是上面的寫法不生效,生效寫法:
<a router="./" [fragment]="test">來吧</a> <div id="test">被定位區(qū)域</div>
二、組件中修改第三方UI庫樣式
之前中vue寫項(xiàng)目的時(shí)候,會(huì)遇到組件風(fēng)格與第三方UI庫沖突的現(xiàn)象,用過vue的同學(xué)都了解,在vue中有個(gè)scoped這個(gè)作用域的概念,如果要自定義與UI庫沖突的地方有以下幾種方式:
- 在App.vue文件中聲名樣式;
- 在子組件中添加多個(gè)style標(biāo)簽;
- 使用深度作用選擇器—— '>>>';
- scss:.a /deep/ .b {...}
- stylus: .a <<< .b{...}
那么在ng中個(gè)什么情況呢?首先需要了解ng渲染組件的機(jī)制,在ng中有一個(gè)東東叫showDOM;
解決方法:
在組件的.ts文件中
import { ViewEncapsulation } from '@angular/core'; @Commpoent({ ... encapsulation: ViewEncapsulation.None })
如果這樣還是覆蓋不了,那就查查類名拼寫啊、層級(jí)嵌套啊、和類名的位置,我曾經(jīng)就是因?yàn)榘杨惷拥奈恢貌粚?duì)導(dǎo)致樣式不生效的,大家不要學(xué)我喲!
三、元素上添加自定義屬性
vue寫法
<li v-for="(item,index) in list" :index="index">{{item.title}}</li>
ng寫法
<li *ngFor="let item of list; index as i" [attr.index]="i"></li>
四、不使用npm引入第三方插件的用法之一
很多時(shí)候,我們需要用的某個(gè)插件可能在npm上沒有,或者由于各種版本問題,導(dǎo)致使用的時(shí)候會(huì)有亂七八糟的bug,找原因,去解決,費(fèi)時(shí)費(fèi)力;
用了ng才能明白,以前用vue的時(shí)候是多么的幸福,使用vue常規(guī)業(yè)務(wù)在國(guó)內(nèi)基本都是即搜即用,ng就。。。嗯,學(xué)英語ing~。
解決方案:
- 將如要用到的插件放入assets文件夾中;
- 在根目錄下的index.html中script引入;
- 在應(yīng)用的組件中使用(window as any).**;
ps: angular.json等其他方式也是可以的的,看各自實(shí)際情況而定;
五、監(jiān)聽滾動(dòng)事件
使用Hostlistener`
@HostListener('window:scroll', ['$event']) public onScroll = () => { do something }
使用fromEvent
import { fromEvent } from 'rxjs' import { debounceTime } from 'rxjs/operators' export class Test{ subscribeSoll; this.subscribeScoll = fromEvent(window,'scroll') .pipe(debounceTime(1000)) .subscribe( (event) => { console.log(event); }) }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Angular2關(guān)于@angular/cli默認(rèn)端口號(hào)配置的問題
本篇文章主要介紹了Angular2關(guān)于@angular/cli默認(rèn)端口號(hào)配置的問題,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-07-07AngularJS通過ng-Img-Crop實(shí)現(xiàn)頭像截取的示例
本篇文章主要介紹了AngularJS通過ng-Img-Crop實(shí)現(xiàn)頭像截取的示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08Angular設(shè)計(jì)模式hierarchical?injector實(shí)現(xiàn)代碼復(fù)用模塊化
這篇文章主要為大家介紹了Angular設(shè)計(jì)模式hierarchical?injector實(shí)現(xiàn)代碼復(fù)用模塊化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10Angularjs實(shí)現(xiàn)mvvm式的選項(xiàng)卡示例代碼
每位Web開發(fā)者應(yīng)該都知道,選項(xiàng)卡是現(xiàn)代web網(wǎng)頁中最常用的效果之一,所以本文重點(diǎn)是用angularjs這個(gè)非?;餸vvm框架,實(shí)現(xiàn)選項(xiàng)卡效果。有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-09-09