angular4实战(3) 插件引入及封装
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j_bleach/article/details/78118193
@types
angular4 默认开发语言是typescript,虽然typescript作为js语言的超集,但是项目默认还是不支持直接使用js脚本的。再引入使用js脚本之前,需要事先引入对应的类型声明文件(xx.d.ts),类似于c中的.h头文件。
本项目中的提醒插件使用了noty,它本身作为一款JS插件,其内部也是支持了typescript的引入的。
当插件本身已经存在了声明文件时,就可以在项目中去使用它了,但是直接引入,typescript还是不认得。 如:
此时两种解决方案。 方案一:
将import Noty from 'noty'改为import * as Noty from 'noty';
方案二: 在tsconfig.json中的compilerOptions下添加配置
"allowJs": true,
"allowSyntheticDefaultImports": true,
服务封装
组件中服务的引用依赖于providers,先向providers做注入,才可以在组件类中去使用。 而服务本身的封装,也需要去Injectable,才可以向providers中提供。
模块共享
这边主要提到的一点是,当切换到stones模块下面时,之前在app.component下声明的各种服务,不会生效,需要在stones模块下重新去挂载,这样是非常麻烦的,因此,在实际项目中,会将那些公用的服务,例如提醒服务,国际化服务(本项目使用了ngx-translate做国际化,ngx-translate在网上的教程比较详尽,不做赘述)。都统一封装在共享的模块下,然后去挂载共享模块。例如项目中有如下内容,需要分发到每个模块。
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {FormsModule} from '@angular/forms';
import {TranslateModule} from '@ngx-translate/core';
import {NotyService} from '../service/noty/noty.service';
import {MaterialModule} from '@angular/material';
import {FlexLayoutModule} from '@angular/flex-layout';
@NgModule({
declarations: [],
exports: [
CommonModule,
MaterialModule,
TranslateModule,
MaterialModule,
FlexLayoutModule,
FormsModule
],
providers: [NotyService]
})
export class SharedModule {
}
此时只需要在不同的模块的imports下,去引入这个共享的即可。
项目地址:https://github.com/jiwenjiang/angular4-material2
- Storm读取Kafka数据是如何实现的
- faster-rcnn在编译时遇到的一些问题
- 使用感知机训练加法模型
- 让你真正理解什么是SparkContext, SQLContext 和HiveContext
- 谈谈Go语言的反射三定律
- centos6.x升级protobuf操作流程.
- java调用c++函数的简单笔记
- 数据挖掘之聚类算法Apriori总结
- 数据挖掘之聚类算法K-Means总结
- mxnet运行时遇到问题及解决方法
- 【算法】朴素贝叶斯分类算法原理与实践
- 深度学习之图像的数据增强
- 《GO并发编程实战》—— 原子操作
- Golang语言社区--wesocket的demo(包括H5前端,GO后端)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法