angular 订阅
Angular (通常是指 "Angular 2+" 或 "Angular v2 及更高版本")。是一个基于 TypeScript 的 开源 Web 应用框架, 由 Google 的 Angular 团队以及社区共同领导。Angular 是由 AngularJS 的同一个开发团队完全重写的。 展开全文
Angular (通常是指 "Angular 2+" 或 "Angular v2 及更高版本")。是一个基于 TypeScript 的 开源 Web 应用框架, 由 Google 的 Angular 团队以及社区共同领导。Angular 是由 AngularJS 的同一个开发团队完全重写的。
信息
外文名
Angular
别    名
Angular
中文名
Angular
广告历程
在设计上,Angular 是 AngularJS 的完全重写。最初,团队将这份 AngularJS 的重写版本称为 “Angular 2”,但这在开发人员之间引起了混乱。为了明确起见,该团队宣布应该为这两个框架分别使用各自的术语,其中 “AngularJS” 专指 1.X 版本,而不带 “JS” 的 “Angular” 则专指版本2及更高版本。在2014年10月22~23日的 ng-Europe 会议上发布了Angular 2.0。2.0 版的重大变化在开发人员之间引起了很大争议。 2015年4月30日,Angular 开发组宣布 Angular 2 从 Alpha 推进到 Developer Preview。 Angular 2 于2015年12月推进至 Beta 版, 并于 2016年5月发布了首个 rc 版本。其最终版本于2016年9月14日发布。2016年12月13日发布了 Angular 4,它跳过了版本号 3,以免由于路由模块的版本的未和其它模块对齐而造成混淆(路由模块在之前已经作为 v3.3.0 发布了)。 其最终版本于2017年3月23日发布。 Angular 4 向后兼容 Angular2。Angular 4.3 版是次要版本,这意味着它没有破坏性变更,是 4.xx 的直接替代品。版本 4.3 中的特性Angular 5 于2017年11月1日发布。 Angular 5 的主要改进包括对渐进式 Web 应用的支持、一个构建优化器,以及一些与 Material Design 相关的改进。Angular 6 于2018年5月4日发布。这是一个主版本,其改进重点不在于底层框架,而在于工具链,其目的是让工具链能在将来与 Angular 一起快速发展,改进点主要包括:ng update、ng add、Angular Elements、Angular Material + CDK 组件库、Angular Material 初学者组件、CLI 工作空间、库支持、服务提供商的摇树优化、动画性能改进,以及 RxJS v6。Angular 7 于2018年10月18日发布。其升级主要集中在 Angular Material & CDK、虚拟滚动、选择框在无障碍方面的改进、支持对符合 Web 标准的自定义元素进行内容投影,以及对 Typescript 3.1、RxJS 6.3、Node 10 (仍然支持 Node 8) 的依赖库更新。Angular 8 于2019年5月28日发布。特性包括:为所有应用代码进行差异化加载、针对惰性加载路由的动态导入、Web workers、支持 TypeScript 3.4,并且把 Angular Ivy 作为可选的预览特性。Angular Ivy 的可选预览特性包括:最值得期待的特性之一是 Ivy ,它是一个向后兼容的、基于增量式 DOM 架构的全新渲染引擎。Ivy 从设计之初就考虑到了摇树优化,这意味着应用的发布包中只会包含那些在应用中真正用到的 Angular 部件。可以预期,每一个版本都会向后兼容前一个版本。Google 承诺每年会进行两次升级。所有主版本都提供了 18 个月的支持。其中包括 6 个月的活跃支持,在此期间会定期发布更新和补丁。然后是12个月的长期支持(LTS),在此期间只会发布关键修复程序和安全补丁。
收起全文
精华内容
下载资源
问答
  • Angular - angular2升级到angular8

    千次阅读 2019-07-26 16:54:28
    最近要项目改造,由原来的angular2 升级到 angular8,需要以下操作: 1.升级全局Angular CLI npm install -g @angular/cli@latest 2..升级你需要升级项目内 angular-cli npm i @angular/cli@latest 3.解决...

    最近要项目改造,由原来的angular2 升级到 angular8,需要以下操作:

    1.升级全局Angular CLI

    npm install -g @angular/cli@latest
    

    2..升级你需要升级项目内 angular-cli

    npm i @angular/cli@latest

    3.解决CLI和程序CLI版本不一致问题(也是在项目内,可以先不执行这个命令的,之后的全部升级也可以完成这个

    npm rebuild node-sass
    

     4.升级node&&npm版本,window系统升级node只能到node官网下载window安装包来覆盖之前的node;mac可以直接命令升级。参考node和npm版本更新!!!

    我升级之后,目前的node版本是10.16.0;Angular的版本是8.1.2。

    5.启动更新程序,查看哪些需要更新

    ng update

    6.升级剩下所有组件

    ng update --all  --force

     我在执行这个命令是会出现以下提示,所以在执行这个命令之前要保证本地工作树是干净的,提交一下代码就可以了。

    7.升级完成后,可以能有一些插件不兼容,可以通过下面的方式安装需要的版本,就是更新一下所有依赖

    npm install

    在执行npm install的时候会提示npm也要升级,so,npm也需要升级

    npm install -g npm
    

    然后,再npm install 一次就OK了 。

    我又执行了一次ng update,发现还有一个要升级,就单独做升级吧

    可能升级到8之后,一些依赖包的引入有所变化,要根据项目在做具体修正。

    展开全文
  • AngularAngular 5 升级到Angular 6 过程实录

    千次阅读 热门讨论 2018-07-26 20:55:56
    第一步:运行:npm install -g @angular/cli 报了-4075的错误,网上说应该是依赖的问题,建议由“npm”改为“cnpm” 第二步:运行:cnpm install -g @angular/cli 成功,接着往下输入命令。 第三步:运行:...
    背景

    头儿给了一个别的项目的框架,让升级到6。
    怎么就算任务完成了呢?我要达到什么效果呢?package.json里的“5”变为“6”,然后项目能正常运行,就算成功了。
    这里写图片描述
    这里写图片描述

    参考资料

    https://update.angular.io/
    这是官方文档,不仅仅是从5升级到6,从任何版本升级到任何版本,都有详细步骤。

    运行步骤

    第一步:运行:npm install -g @angular/cli
    这里写图片描述
    报了-4075的错误,网上说应该是依赖的问题,建议由“npm”改为“cnpm”
    第二步:运行:cnpm install -g @angular/cli
    这里写图片描述
    成功,接着往下输入命令。
    第三步:运行:npm install @angular/cli
    这里写图片描述
    这里写图片描述
    如图所示,报了-4048的错误,跟echarts有关系。解决办法是把package.json文件中相关的那句代码删除。我当初就卡在这了,不知道咋解决,是请风大神帮忙的。
    这里写图片描述
    删除以后将此命令重新运行一遍,成功。
    这里写图片描述
    第四步:运行:ng update @angular/cli
    这里写图片描述
    报错了,原因是本地脚手架版本较低,解决办法就是升级。
    第五步:运行:npm install --save-dev @angular/cli@latest
    这里写图片描述
    第六步:运行:ng update @angular/core
    这里写图片描述
    第七步:运行:ng update @angular/material
    这里写图片描述
    第八步:运行:ng serve,成功
    这里写图片描述
    第九步:分别运行:npm install -g rxjs-tslint、rxjs-5-to-6-migrate -p src/tsconfig.app.json
    看样子是把一个已弃用的东西删除。

    小结

    这样走下来,发现也没有想象中那么难。最重要的是“以终为始”,要知道自己要达到的效果,然后有一种敢于接触新东西的勇气。

    展开全文
  • Angular实现下拉菜单多选 写这篇文章时,引用文章地址如下: http://ngmodules.org/modules/angularjs-dropdown-multiselect http://dotansimha.github.io/angularjs-dropdown-multiselect/#/ ...

    Angular实现下拉菜单多选

    写这篇文章时,引用文章地址如下:

    http://ngmodules.org/modules/angularjs-dropdown-multiselect

    http://dotansimha.github.io/angularjs-dropdown-multiselect/#/

    AngularJS Dropdown Multiselect

    This directive gives you a Bootstrap Dropdown with the power of AngularJS directives.

    Features

    Based on Bootstrap's dropdown.

    jQuery is not necessary.

    Seperated your data and the selection data. no modification to the data made.

    Built-in search.

    Complete control on the selected items model to fit it to your requirements.

    Two view options: normal list and checkboxes.

    Pre-selected values.

    Limit selection count.

    Grouping items by property.

    Callback events.

    Demo

    http://dotansimha.github.io/angularjs-dropdown-multiselect/

    Dependencies

    required: AngularJS >= 1.2, Lodash >= 2, Bootstrap >= 3.0

    Make sure to add the dependencies before the directive's js file.

    Note: Bootstrap JS file is not needed for the directive, it just uses the CSS file.

    Install

    Download the files

    Using bower:

    Just run bower install angularjs-dropdown-multiselect

    Manually: You can download the .js file directly or clone this repository.

    Include the file in your app

    <script type="text/javascript" src="angularjs-dropdown-multiselect.js"></script>.

    You can also use the minfined version (angularjs-dropdown-multiselect.min.js).

    Include the module in angular (i.e. in app.js) - angularjs-dropdown-multiselect

    Usage and Documentation

    See the documentation and examples in the GitHub pages: http://dotansimha.github.io/angularjs-dropdown-multiselect/

    由以上英文文档可以得知,若使用angularjs-dropdown-multiselect,首先需要在index.html中引入AngularJS >= 1.2, Lodash >= 2, Bootstrap >= 3.0,如下所示:

    <script src="js/angularjs-dropdown-multiselect.js"></script>

    <script src="js/lodash.min.js"></script>

    并在app.js模块中添加依赖angularjs-dropdown-multiselect。如下所示:

    var routerApp = angular.module('routerApp', ['ui.router''ngCookies''ngTable''angularjs-dropdown-multiselect''MedListModule']);

    yh_set_dtl.html核心代码如下:

    <div style="float:left">优 惠 类 型:</div>

    <!-- Demo -->

    <div ng-dropdown-multiselect="" 

     options="yhctlModelOptions" 

     selected-model="yhctlModel"

     checkboxes="true">

    </div>

    controllers.js代码如下:

     $scope.yhctlModel = [];

     

     $scope.yhctlModelOptions = [ 

                                  {id: 1, label: '限定用户'}, 

                                  {id: 2, label: "限定商家"}, 

                                  {id: 3, label: "限定使用次数"},

                                  {id: 4, label: "限定药品"}, 

                                  {id: 5, label: "与其它优惠共享"}];

    效果图如下:

     

    展开全文
  • requirejs+angular+angular-route浅谈HTML5单页面架构 众所周知,现在移动Webapp越来越多,例如天猫、京东、国美这些都是很好的例子。而在Webapp中,又要数单页面架构体验最好,更像原生app。简单来说,单页面App不...

    requirejs + angular + angular-route 浅谈HTML5单页面架构

          众所周知,现在移动Webapp越来越多,例如天猫、京东、国美这些都是很好的例子。而在Webapp中,又要数单页面架构体验最好,更像原生app。简单来说,单页面App不需要频繁切换网页,可以局部刷新,整个加载流畅度会好很多。

          废话就不多说了,直接到正题吧,浅谈一下我自己理解的几种单页面架构: 

          1、requirejs+angular+angular-route(+zepto)

          最后这个zepto可有可无,主要是给团队中实在用不爽angular的同学,可以灵活修改一下页面某些内容。当然,严谨的项目不应该出现zepto。 

          2、requirejs+backbone+zepto+template 

          这个方案更灵活,MVC味道更浓,使用自定义的template模版库 

          3、requirejs+route+template 

          这个方案最灵活,看破红尘,针对简单的业务用最简单的方式,只需要路由和模版,不用MVC框架 

          4、react 

         个人感觉,react更偏向于view层的组件,更native,但实施难度略高

         说到项目架构,往往要考虑很多方面:

          方便:例如使用jquery,必然比没有使用jquery方便很多,所以大部分网站都接入类似的库;

         性能优化:包括加载速度、渲染效率;

         代码管理:大型项目需要考虑代码的模块化,模块间低耦合高内聚,目的就为了团队合作效率;

         可扩展性:这个不用说了。

         学习成本:一个框架再好,团队新成员难以掌握,学习难度大,结果很容易造成代码混乱。

          而根据实际经验来看,方便是必然首要地位,除此之外,应该是代码管理了。团队合作过程中,各种协作,代码冲突等等,都会给一个优秀框架带来各种奇怪难题。所以,有好的框架还不够,我们还需要根据自身业务和团队的情况,按需裁剪或者修改框架,找到最佳的实施方案。

          接下来,将分三个随笔分别介绍一下我心目中前三种架构的较好实施方案,而最后一种,跟前三种有种道不同不相为谋的感觉,加上自己道行不够,还是暂且不提了。

          这一篇,先说说第一种:requirejs+angular+angular-route

          移动端单页面Web相对多页面来说,模块化管理显得非常重要,因为如果没有模块化,页面初始化时就把所有的js和所有模版都加载进来,会导致首屏速度极慢。这一点,大家都理解的。 

          所以,requirejs或者类似的模块化框架是必不可少的。requirejs比较流行,配合grunt可以做好整套的自动化工具,我们就以这个为例子吧。

         首先,来看看demo项目的整体架构。

         除了类库外,业务代码都以模块划分目录,这样做便于实际开发中,按模块化合并js和html,也利于多人并行开发,各自修改不同的模块,互不影响。

         另外,说说三个重点的根目录文件:

          index.html,这个就是单页面唯一一个html了,其他都只是片段模版(tpl.html)。一般可以把这个html放到动态服务器上,保持零缓存,同时这里可以携带各种js版本控制信息和必要的用户数据。

          main.js,这个是由requirejs引入的第一个业务js,主要是配置requirejs;

          router.js,这个是整个网站/app的路由配置,在实际部署中,可以把main.js和router.js合并。

    第一步,先看看index.html需要做什么变化

     

    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>Angular & Requirejs</title>
    </head>
    <body>
    <div id="container" ng-view></div>
    <script data-baseurl="./" data-main="main.js" src="libs/require.js" id="main"></script>
    </body>
    </html>

     

          相对angular的写法,这里由于使用requirejs管理全部模块,所以index.html中不需要引入angular等,只是设置了一个带ng-view属性的div,用于充当整个App的视图区域。 

          data-baseurl是额外加入的属性,主要好处是可以轻松在html(0缓存)中对js的url进行修改。 

          data-main就是requirejs的标准写法了,跳过不说。

    第二步,main.js,也就是requirejs的配置

     

    'use strict';
    (function (win) {
        //配置baseUrl
        var baseUrl = document.getElementById('main').getAttribute('data-baseurl');
        /*
         * 文件依赖
         */
        var config = {
            baseUrl: baseUrl,             // 依赖相对路径
            paths: {                    // 如果某个前缀的依赖不是按照baseUrl拼接这么简单,就需要在这里指出
                underscore: 'libs/underscore',
                angular: 'libs/angular',
                'angular-route': 'libs/angular-route',
                text: 'libs/text'             // 用于requirejs导入html类型的依赖
            },
            shim: { //引入没有使用requirejs模块写法的类库。例如underscore这个类库,本来会有一个全局变量'_'。这里shim等于快速定义一个模块,把原来的全局变量'_'封装在局部,并导出为一个exports,变成跟普通requirejs模块一样
                underscore: {
                    exports: '_'
                },
                angular: {
                    exports: 'angular'
                },
                'angular-route': {
                    deps: ['angular'],   //依赖什么模块
                    exports: 'ngRouteModule'
                }
            }
        };
        require.config(config);
        require(['angular', 'router'], function(angular){
            angular.bootstrap(document, ['webapp']);
        });
    })(window);

     

          requirejs的语法,说来话长,简单在代码中做了注释。有兴趣了解详情的可以参考官网:http://requirejs.org/;

          angular可以参考:https://docs.angularjs.org/guide/filter

          这里配置好requirejs后,就做第一步工作,引入angular和angular的路由配置,然后用angular.bootstrap(document, [‘webapp’]); 手工启动angular,这里webapp是router.js中定义的angular module。

    第三步,配置这个router

     

    define(['angular', 'require', 'angular-route'], function (angular, require) {
        var app = angular.module('webapp', ['ngRoute']);
        app.config(['$routeProvider', '$controllerProvider',
            function($routeProvider, $controllerProvider) {
                $routeProvider.
                    when('/module1', {
                        templateUrl: 'module1/tpl.html',
                        controller: 'module1Controller',
                        resolve: {
                            /*
                            这个key值会被注入到controller中,对应的是后边这个function返回的值,或者promise最终resolve的值。函数的参数是所需的服务,angular会根据参数名自动注入对应controller写法(注意keyName):
               controllers.controller('module2Controller', ['$scope', '$http', 'keyName',
                                 function($scope, $http, keyName) {
                             }]);
                             */
                            keyName: function ($q) {
                                var deferred = $q.defer();
                                require(['module1/module1.js'], function (controller) {
                                    $controllerProvider.register('module1Controller', controller);      //由于是动态加载的controller,所以要先注册,再使用
                                    deferred.resolve();
                                });
                                return deferred.promise;
                            }
                        }
                    }).
                    otherwise({
                        redirectTo: '/module1'      //angular就喜欢斜杠开头
                    });
            }]);
        return app;
    });

     

          上述代码看起来长,实际很短,因为有一堆绿色的注释,嘿嘿。。。 

          如果大家用过angular-route,这里的语法就很简单,如果没用过,则建议直接阅读angular-route源代码中的注释,非常清晰。 

          简单而言,就是when函数配置一个路由规则,对应一个template和一个controller。otherwise就是默认路由,也就是遇到一个未定义路径的时候如何跳转。 

          如果没有使用requirejs,那么我们需要在路由配置前加载完全部controller。angular-route需要做的只是切换HTML模版,重新编译,绑定新的controller。 

          但是这里用了requirejs,事情就变化了。我们要按需加载,不可能页面刚加载就全部controller都load回来,这样得耗费多少流量。。。 

          所以,这里利用了angular-route提供的resolve功能,也就是路由更改html前先把resolve里边该做的事完成。 

          resolve的写法比较特殊,接受的是一个key:value对象,keyName将会导入到controller中(如果controller有注明依赖)。而value应该是一个函数,函数的写法类似controller,angular会自动根据参数名导入相应依赖的服务,例如$q、$route。 

          上述例子中,module1.js定义了模块1的controller,后续我们再看代码。 

          由于路由配置前还不存在这个controller,所以现在需要动态注册这个controller。也就是:

          $controllerProvider.register('module1Controller', controller);

    第四步,看看模块1的controller是怎么写的

     

    define(['angular'], function (angular) {
        //angular会自动根据controller函数的参数名,导入相应的服务
        return function($scope, $http, $interval){
            $scope.info = 'kenko';      //向view/模版注入数据
            //模拟请求cgi获取数据,数据返回后,自动修改界面,不需要啰嗦的$('#xxx').html(xxx)
            $http.get('module2/tpl.html').success(function(data) {
                $scope.info = 'vivi';
            });
            var i = 0;
            //angularjs修改了原来的setTimeout和setInterval,要用这两个玩意,必须引入$timeout和$interval,否则无法修改angular范围内的东西
            $interval(function () {
                i++;
                $scope.info = i;
            }, 1000);
        };
    });

     

          angular有太多牛逼的功能,但实际上我业务太简单,用不到。所以这里只演示了3种最简单的情况。 

          这里不得不说,由于双向绑定,拉cgi和修改dom这些操作就变得非常简单了。 

          貌似一切解决了?这样的模块化似乎已经很好,跳转到某个模块的时候才加载对应的html和controller js。 

          但是对于追求极致的团队来说,模块的html和js应该打包在一起,一次请求就拉回来,这样能大大减少HTTP请求的时间。而现在按照angular-route,只能利用templateUrl单独拉取一个html文件。 

         那么接下来,我们再动动歪脑筋,修改一下。

    第五步,修改angular-route,实现HTML和js打包加载。

     

    function ngViewFillContentFactory($compile, $controller, $route) {
      return {
        restrict: 'ECA',
        priority: -400,
        link: function(scope, $element) {
          var current = $route.current,
              locals = current.locals;
          $element.html(current.template);  //原来是locals.$template

     

         首先,先修改一下angular-route的源代码,这个源代码非常精简,不用太纠结,狠狠的去修改就好了。 

          另外,想问我为什么知道或者想到在这修改?咳咳咳,我会大摇大摆的说我认识angular-route的作者么?。。。。。。。开玩笑,作者叫什么,我都没去找,还说认识作者。其实就是逐步调,稍加变量搜索,发现一些不对劲,就做了这个小刀。 

          再另外,有专家要拍板了,这样乱修改,肯定带来毛病。是的,我不得不说,我自己都没彻底的检查是否有问题,但按照实际情况来看,暂时没遇到问题。 

          然后,做一个新的when配置:

     

           when('/module2', {
                        template: '',
                        controller: 'module2Controller',
                        resolve:{
                            keyName: function ($route, $q) {
                                var deferred = $q.defer();
                                require(['module2/module2.js'], function (module2) {
                                    $controllerProvider.register('module2Controller', module2.controller);
                                    $route.current.template = module2.tpl;
                                    deferred.resolve();
                                });
                                return deferred.promise;
                            }
                        }
                    })

     

          这里用module2做例子,跟module1不同,这里初始设置的template是空字符串,然后在resolve中require回来后,动态修改$route.current.template。 

          因为我知道,这个修改能赶在angular-route修改HTML前,也就是小把戏能凑效。 

         相应,看看module2怎么写:

     

    define(['angular', 'text!module2/tpl.html'], function (angular, tpl) {
        //angular会自动根据controller函数的参数名,导入相应的服务
        return {
            controller: function ($scope, $http, $interval) {
                $scope.date = '2015-07-13';
            },
            tpl: tpl
        };
    });

     

          大功告成,这样html模版就不由angular-route去接管了,而是由requirejs加载,我们可以控制的范围和灵活性就变大了。 

          不过,这里controller的函数写法可能会因为压缩混淆时丢失了原来的参数名,所以,我们也可以采用显式注入的方式:

     

     //也可以使用这样的显式注入方式,angular执行controller函数前,会先读取$inject
        controller.$inject = ['$scope'];
        function controller(s){
            s.date = '2015-07-13';
        }
        return {controller:controller, tpl:tpl};

     

          到这里,整个架构基本就成型了,webapp中每个模块都能非常独立,这样对网站打开速度和协同开发都非常有好处。 

          但是,路由表的配置还是略复杂,每次大家都要写一大堆代码,这不是我们想要的,那么可以抽取公用代码,再优化一下。

    第六步,优化路由表,变成真正的配置化。

     

    define(['angular', 'require', 'angular-route'], function (angular, require) {
        var app = angular.module('webapp', [
            'ngRoute'
        ]);
        app.config(['$routeProvider', '$controllerProvider',
            function($routeProvider, $controllerProvider) {
                var routeMap = {
                    '/module2': {                           //路由
                        path: 'module2/module2.js',         //模块的代码路径
                        controller: 'module2Controller'     //控制器名称
                    }
                };
                var defaultRoute = '/module2';              //默认跳转到某个路由
                $routeProvider.otherwise({redirectTo: defaultRoute});
                for (var key in routeMap) {
                    $routeProvider.when(key, {
                        template: '',
                        controller: routeMap[key].controller,
                        resolve:{
                         keyName:requireModule(routeMap[key].path, routeMap[key].controller)
                        }
                    });
                }
                function requireModule(path, controller) {
                    return function ($route, $q) {
                        var deferred = $q.defer();
                        require([path], function (ret) {
                            $controllerProvider.register(controller, ret.controller);
                            $route.current.template = ret.tpl;
                            deferred.resolve();
                        });
                        return deferred.promise;
                    }
                }
            }]);
        return app;
    });

     

           routeMap可以由服务器直出,实现0缓存,彻底解耦,更便于团队合作。 

          最后最后,由于requirejs和angular都有模块管理,但两个概念又不一致,这里说说我的看法:

          requirejs模块管理,不单单是代码模块化,还提供了模块加载的功能; 

          angular模块管理,更在乎的是代码逻辑上的模块化,避免全局变量污染,并不提供js文件层面的加载功能;

          作为逻辑模块管理,其实用requirejs的模块管理就够了,所以我觉得除了angular原生的controller、service外,我们业务相关的公用库,用requirejs吧。

    美文美图

     

    展开全文
  • angular9拦截器的使用

    万次阅读 2020-07-06 22:10:29
    angular9拦截器的简单使用拦截器统一添加token拦截器使用拦截器实现后的效果参考资料 拦截器统一添加token 我们在做一个后台管理系统时,需要给每个请求的请求头里面添加token,所以下面我们来了解一下angular的拦截器...
  • AngularAngular发展

    千次阅读 热门讨论 2018-04-23 11:32:41
    Angular是一个开发平台,它能帮助你更轻松的构建web应用。Angular集声明式模板、依赖注入、端到端工具和一些最佳实践于一身,为你解决开发方面的各种挑战。Angular为开发者提升构建web、手机或桌面应用能力。 ...
  • angular2升级angular4

    千次阅读 2017-06-23 11:11:14
    angular2升级angular4
  • 安装Angular

    万次阅读 2019-09-20 15:59:34
    安装Angular 下载,之后安装 https://nodejs.org/dist/v12.16.2/node-v12.16.2-x64.msi 查看安装情况 C:\Users\admin>node -v v12.1...
  • Angular环境搭建

    万次阅读 多人点赞 2017-04-27 16:15:33
    目前Angular的最新版本是Angular4.0,所以我们搭建的环境是4.0版本的。 Angular官方给我们提供了一个命令行工具就是Angular CLI,通过这个工具我们能很容易的创建Angular项目。后期对项目的管理及构建等都是使用...
  • Angular CLI 是 Angular 客户端命令行工具,提供非常多的命令来简化 Angular 的开发。今天执行“ng serve”命令时,竟然报找不到模块"@angular-devkit/build-angular"的错误。 问题背景 执行“ng serve”命令时,...
  • 本文代码已上传到github:https://github.com/minicherry/taoBao1.Angular Material,Angular CDK基础配置引入此部分参考:juejin.im/post/5a7272…安装配置从官网学习:material.angular.io/guide/getti…下载...
  • angular9使用echarts地图

    万次阅读 2020-06-13 16:20:30
    1.安装了@angular-cli的脚手架 2.ng -v查看版本 3. ng new my-project(项目名) 下载echarts npm i echarts 创建容器 src/app/app.componnet.html <div id="main" style="width:800px;height:500px"></div...
  • angular9组件动态加载实现

    万次阅读 2020-07-19 16:21:57
    按条件加载组件,实现组件的灵活切换,减少大量ngIf的使用,在angular中也是比较常见的操作,下面就来大家一起交流一下angular组件的动态使用. 指令的创建 在添加组件之前,先要定义一个锚点来告诉 Angular 要把组件插入...
  • Angular DataTables

    2018-05-22 11:25:16
    http://l-lin.github.io/angular-datatables/#/welcome
  • angular7升级到angular8

    千次阅读 2019-09-25 17:50:01
    angular7升级到angular8 最近换了项目组,技术栈也更换了(原来是Vue,现在是angular)。正好赶上版本升级,于是自己尝试升级,顺便记录了过程中遇到的问题,希望可以帮到需要升级的朋友。 先使用ng update 查看...
  • Angular 8降级到Angular 7

    千次阅读 2019-10-24 22:11:08
    ng --version npm uninstall -g @angular/cli npm cache clean --force npm install -g @angular/cli@7.2.12 ng --version
  • AngularJS、Angular 2、Angular 4的区别 前言 随着Angular的发展,有必要了解AngularJS、Angular 2、Angular 4的区别 命名区别 (1)我们常说的Angular 1 值angularJS;从angular 2 开始改名,不带有JS (2...
  • Angular6 升级到 Angular8

    千次阅读 2019-06-25 10:46:10
    这里用的是基础的Angular6项目,里面只有部分第三方插件 1.升级全局Angular CLI npm install -g @angular/cli@latest 2.解决CLI和程序CLI版本不一致问题 npm rebuild node-sass 3.启动更新程序,查看...
  • Angular6向Angular7跨越

    千次阅读 2019-01-23 21:56:13
    最近一直在用Angular这个框架,也打算深入学一下,在去年9月的时候看到了Angular出7.0版本了,想着自己还是个年轻人,应该有不断学习的能力,但是前面一直在弄软考,项目什么的,为了开发速度就没有更新,这次有时间...
  • Angular: 如何彻底卸载angular cli

    千次阅读 2020-02-29 16:21:03
    npm uninstall -g angular-cli npm uninstall --save-dev angular-cli npm uninstall -g @angular/cli npm cache clean (如果报错,执行强制清除缓存npm cache clean --force) npm install -g @angular/cli@latest ...
  • Angular CLI 创建 Angular项目

    千次阅读 2018-03-06 15:24:46
    最后项目的打包Angular4.0来了,更小,更快,改动少接下来为Angular4.0准备环境和学会使用Angular cli项目1.环境准备: 1)在开始工作之前我们必须设置好开发环境如果你的机器上还没有安装Node.js和npm,请安装他们...
  • 获取鼠标事件 在第三节的示例中,假如我们需要获取鼠标事件,那应该怎么办呢?这时,我们可以引入 $event 变量,...import {Component, OnInit} from '@angular/core'; @Component({ selector: 'app-simple-
  • angular-1.4.1

    千次下载 热门讨论 2015-07-01 17:55:51
    从官网angularjs.org下载,包含angular.js、angular.min.js、angular.min.js.map、angular-route.js、angular-route.min.js之类等等 ... AngularJS是为了克服HTML在构建应用上的不足而设计的,它通过新的属性和...
  • angular6项目升级到angular7

    千次阅读 2018-12-29 14:33:53
    ng update @angular/cli @angular/core
  • 对于一个前端来说 angular react vue jquery 之类的技术是必须学习的 学习过程中 多多少少 会遇到各种各样的困难,借鉴和学习别人的东西也必不可少的。 对于本人学习angular 来说也曾经历过很长时间的摸索,也借鉴...
  • Angular 中,我们可以使用 HostListener 属性装饰器,实现元素的事件绑定。 指令的作用 该指令用于演示如何利用 HostListener 装饰器,监听用户的点击事件。 指令的实现 import { Directive, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 134,227
精华内容 53,690
关键字:

angular