浅谈Angular7 项目开发总结


Posted in Javascript onDecember 19, 2018

由于公司需要,开始学习angular,这个传闻中学习曲线及其陡峭的前端框架,并开始写第一个用angular的项目,截止今天初步完成现有需求,顾在此做一次遇到问题的总结,以便知识的掌握。

一、在angular项目中,如何使用锚点

在常规项目中,使用锚点用来做"智能"定位效果时,只需这么写:

<a href="#test" rel="external nofollow" >走你</a>
<div id="test">被定位区域</div>

但是在ng中,a标签中的href属性会自动的使用路由机制,最后的结果会被当成跳转的路由地址,具体的原因有待进一步考证,反正最后的结果就是上面的写法不生效,生效写法:

<a router="./" [fragment]="test">来吧</a>
<div id="test">被定位区域</div>

二、组件中修改第三方UI库样式

之前中vue写项目的时候,会遇到组件风格与第三方UI库冲突的现象,用过vue的同学都了解,在vue中有个scoped这个作用域的概念,如果要自定义与UI库冲突的地方有以下几种方式:

  • 在App.vue文件中声名样式;
  • 在子组件中添加多个style标签;
  • 使用深度作用选择器—— '>>>';
    • scss:.a /deep/ .b {...}
    • stylus: .a <<< .b{...}

那么在ng中个什么情况呢?首先需要了解ng渲染组件的机制,在ng中有一个东东叫showDOM;

解决方法:

在组件的.ts文件中

import { ViewEncapsulation } from '@angular/core';

@Commpoent({
  ...
  encapsulation: ViewEncapsulation.None
})

如果这样还是覆盖不了,那就查查类名拼写啊、层级嵌套啊、和类名的位置,我曾经就是因为把类名加的位置不对导致样式不生效的,大家不要学我哟!

三、元素上添加自定义属性

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引入第三方插件的用法之一

很多时候,我们需要用的某个插件可能在npm上没有,或者由于各种版本问题,导致使用的时候会有乱七八糟的bug,找原因,去解决,费时费力;

用了ng才能明白,以前用vue的时候是多么的幸福,使用vue常规业务在国内基本都是即搜即用,ng就。。。嗯,学英语ing~。
解决方案:

  • 将如要用到的插件放入assets文件夹中;
  • 在根目录下的index.html中script引入;
  • 在应用的组件中使用(window as any).**;

ps: angular.json等其他方式也是可以的的,看各自实际情况而定;

五、监听滚动事件

使用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);
    })
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 文件传参及处理技巧分析
May 13 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
Jan 04 Javascript
回车直接实现点击某按钮的效果即触发单击事件
Feb 27 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
May 23 Javascript
深入浅析JavaScript中对事件的三种监听方式
Sep 29 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
Jun 13 Javascript
JS实现输入框提示文字点击时消失效果
Jul 19 Javascript
Bootstrap模态框禁用空白处点击关闭
Oct 20 Javascript
走进javascript——不起眼的基础,值和分号
Feb 24 Javascript
使用InstantClick.js让页面提前加载200ms
Sep 12 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
Sep 16 Javascript
JS实现图片拖拽交换效果
Nov 30 Javascript
mockjs+vue页面直接展示数据的方法
Dec 19 #Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
Dec 19 #Javascript
vue使用Google地图的实现示例代码
Dec 19 #Javascript
JS实现获取自定义属性data值的方法示例
Dec 19 #Javascript
vue动态绑定class选中当前列表变色的方法示例
Dec 19 #Javascript
js指定日期增加指定月份的实现方法
Dec 19 #Javascript
动态内存分配导致影响Javascript性能的问题
Dec 18 #Javascript
You might like
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
PHP基本语法总结
2014/09/06 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
js parseInt(&quot;08&quot;)未指定进位制问题
2010/06/19 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
解析Python中的二进制位运算符
2015/05/13 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
numpy数组拼接简单示例
2017/12/15 Python
Python实现的三层BP神经网络算法示例
2018/02/07 Python
pandas 按照特定顺序输出的实现代码
2018/07/10 Python
python开头的coding设置方法
2019/08/08 Python
numpy按列连接两个维数不同的数组方式
2019/12/06 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
python中doctest库实例用法
2020/12/31 Python
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
妇科医生自荐信
2013/11/05 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
ktv周年庆活动方案
2014/08/18 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
融资合作协议书范本
2014/10/17 职场文书
个人存款证明书
2014/10/18 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
员工工作能力评语
2014/12/31 职场文书
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android
keepalived + nginx 实现高可用方案
2022/12/24 Servers