Angular开发小笔记
一、父组件怎么覆盖子组件的样式呢
1./deep/(不建议这么做,以后angular会取消,因为这样写不利于组件的独立性)
在父组件的scss里面写:
:host{
子组件名 /deep/ label{
color:red
}
}
这样就可以覆盖掉子组件label的color了
2.host和host-context
在子组件的scss里面写:
:host(.自身加的class){
label{
color:red;
}
}
或者
:host-context(父组件名){
label{
color:red;
}
}
网上查到的定义:
:host(selector) { ... }forselectorto match attributes, classes, ... on the host element:host-context(selector) { ... }forselectorto match elements, classes, ...on parent
二、Unit Test for Service
有两个方法,但是其实都是大同小异,都需要inject来生成实例,和mockBackend来模拟http返回data
方法一:注入要测试的service和MockBackend,并得到其实例
import { MockBackend } from '@angular/http/testing';
import { TestBed, inject } from '@angular/core/testing';
import { TestService } from './test.service';
import { Response, ResponseOptions } from '@angular/http';
describe("test.service", () => {
let testService:any;
let backend:any;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [TestService, MockBackend]
});
})
//inject注入要测试的service和mockbackend(模拟http返回数据),后面注入function拿到对应实例
beforeEach(inject([TestService, MockBackend], (testService, mockBackend) => {
this.testService = testService;
this.backend = mockBackend;
}))
it('test a service', () => {
let MOCKDATA = {
//一些模拟数据...
}
this.backend.connections.subscribe((connection) => {
connection.mockRespond(new Response(new ResponseOptions({
body: JSON.stringify(MOCKDATA)
})));
});
this.testService.getData('一些api需要的数据').subscribe((res) => {
expect(res.length).toEqual(10);
});
})
})
方法二:自己重写一个http,mockData传到自己重写的http上,前提是service调用了自己重写的http方法
describe("test.service", () => {
let testService:any;
beforeEach(() => {
let mockData = new ResponseOptions({
body: JSON.stringify({
//MockData
})
});
let cshttpServiceStub: any = {
get: function () {
return Observable.create(observer => {
observer.next((new Response(mockData)));
observer.complete();
})
}
}
TestBed.configureTestingModule({
providers: [
TestService,
{ provide: CshttpService, useValue: cshttpServiceStub }
]
});
})
//还是需要inject,才能在不调用component请款下创建service实例
beforeEach(inject([TestService], (testService) => {
this.testService = testService;
}))
it('test a service', () => {
this.testService.getData('一些api需要的数据').subscribe((res) => {
expect(res.length).toEqual(10);
});
})
})
三、面对没有值的html属性,怎么办?
例如input的disabled,video和audio的autoplay、loop,ol的reversed.....
这些属性都是只要存在于标签上就会有所影响:
例如:
<video autoplay src="1.mp4"></video>
<video autoplay="false" src="1.mp4"></video>
无论给autoplay什么值都好,甚至给它false都好,这个video还是会自动播放,这个时候Angular提供了比较方便的方法去实现动态判断是否留下这样属性的方法
大致有2个方法:
方法1:中括号输入法
<video [autoplay]="false" src="1.mp4"></video>
把autoplay用中括号包住,如果是false,Angular就会自动把它去除掉,编译出来就变成
<video src="1.mp4"></video>
方法2:中括号attr输入法
<video [attr.autoplay]="true" src="1.mp4"></video>
<video [attr.autoplay]="null" src="1.mp4"></video>
attr.属性和中括号输入法差不多,不同的是false的时候不能输入false,因为attr.属性会把输入的值原封不动地输入去,编译成下面这样:
<video autoplay="false" src="1.mp4"></video>
而输入null则可以实现和括号输入法输入false时一样的效果。
四、常用的Angular内置的指令
| 指令 | 例子 |
| ngIf | *ngIf="true" |
| ngFor | *ngFor="let btn of btns" |
| ngClass | [ngClass]="{'info':true}" |
| ngModel | [(ngModel)] = "person.name" |
| ngModelChange |
(ngModelChange)="onChange($event)"
|
| ngSubmit | (ngSubmit) = "onSubmit($event)" |

Angular开发小笔记的更多相关文章
- Angular 开发小妙招1:提交表单数据验证不通过,更改输入组件的样式
开发表单时,客户端数据完整性校验是必不可少的,在jquery 时代出现了无数的数据验证插件也很好用,开发Angular 应用时,angular 内置了一些常用的数据验证指令.今天要讲的不是这些指令如何 ...
- PIE 插件式开发小笔记__PIESDK学习体会
基于PIE.NET-SDK插件式二次开发文档笔记: PIE 插件式开发配置文件: 它里面一行如下: 理解上一行'Item'关系-> library:为插件类名(程序集名称+后缀 ...
- WEEX-EROS开发小笔记
本文是作者之前刚接触移动端跨平台开发,使用weex-eros开发项目平日里记下来的一些笔记,分享出来方便为新手解惑,weex-eros是weex的一套解决方法,使用vue语法糖,对于前端开发者来说可以 ...
- android studio开发小笔记1
1.点击空白处隐藏软键盘 /* 隐藏软键盘 * */ public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == ...
- 转:【iOS开发每日小笔记(十一)】iOS8更新留下的“坑” NSAttributedString设置下划线 NSUnderlineStyleAttributeName 属性必须为NSNumber
http://www.bubuko.com/infodetail-382485.html 标签:des class style 代码 html 使用 问题 文件 数据 ...
- 《C++游戏开发》笔记十一 平滑动画:不再颤抖的小雪花
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9430645 作者:七十一雾央 新浪微博:http:/ ...
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- Rest API 开发 学习笔记(转)
Rest API 开发 学习笔记 概述 REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式.获得这些表徵致使这些应用程序转变了其状态.随着 ...
- 《MFC游戏开发》笔记十 游戏中的碰撞检测进阶:地图类型&障碍物判定
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9394465 作者:七十一雾央 新浪微博:http:// ...
随机推荐
- 一些调格式的经验 & 插入图注和尾注
一些调格式的经验(以Word2010为例) 1. 从目录正文分别编页码 将光标放在要重新编写页码起始页的最开始位置 分节:页面布局->分隔符->分节符(连续) 插入页码后,选中页码起始页页 ...
- git学习心得
https://github.com/zhangxinn/test/tree/master 自己虽然在课堂上有认真的听老师讲解如何使用github,包括怎样在线学习,怎样在github上建立自己的仓库 ...
- 关于RESTful 的概念
1.REST 是面向资源的,这个概念非常重要,而资源是通过 URI 进行暴露.URI 的设计只要负责把资源通过合理方式暴露出来就可以了.对资源的操作与它无关,操作是通过 HTTP动词来体现,所以RES ...
- HDOJ2010_水仙花数
一道水题.一直出现Output Limit Exceeded的原因是在while循环中没有终止条件的时候会自动判断并报错,写的时候忘记加!=EOF结束标识了. HDOJ2010_水仙花数 #inclu ...
- 2017BUAA软工个人作业Week1
大概的功能已经满足 暂时只能用debug中的exe文件 正在改进... https://github.com/qwellk/project1/tree/product1 PSP2.1 Personal ...
- Maven的课堂笔记4
9.Maven与MyEclipse2014结合 MyEclipse10以上的版本,对Maven支持的就比较好 9.2 Myeclipse配置 本地文件夹的C盘的.m2文件夹下必须得有这个setting ...
- CodeIgniter中使用base_url()时显示http://::1/ci/
URL 辅助函数文件包含了一些帮助你处理 URL 的函数. 加载辅助函数后,你可以使用base_url(),site_url(),current_url()等一些列函数,但是有时候你会遇到这种问题,就 ...
- MapReduce 过程详解
Hadoop 越来越火, 围绕Hadoop的子项目更是增长迅速, 光Apache官网上列出来的就十几个, 但是万变不离其宗, 大部分项目都是基于Hadoop common MapReduce 更是核心 ...
- mysql的group_concat对应oracle的wm_concat
mysql的group_concat对应oracle的wm_concat http://bey2nd.blog.163.com/blog/static/12063183120124313360964/
- JavaScript解决一个带验证的Form两个Submit事件(一个页面保持不动【AJAX实现】,一个页面提交并跳转)的场景
<form class="form-horizontal" action="/biz/patent/edit" method="post&quo ...