GVKun编程网logo

在Angular 2中使用/ deep /和>>>(angular declare)

11

本篇文章给大家谈谈在Angular2中使用/deep/和>>>,以及angulardeclare的知识点,同时本文还将给你拓展Angular-如何在Angular2中使用jQuery及其插件、angu

本篇文章给大家谈谈在Angular 2中使用/ deep /和>>>,以及angular declare的知识点,同时本文还将给你拓展Angular-如何在Angular2中使用jQuery及其插件、angular2 – 在Angular 2中动态添加事件侦听器、angular2 – 在Angular 2中等价于$compile、angular2 – 我如何在angular 2中使用angular.copy等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

在Angular 2中使用/ deep /和>>>(angular declare)

在Angular 2中使用/ deep /和>>>(angular declare)

我一直在阅读此选择器,并得到相互矛盾的答案。

在:/ deep /和::shadow在CSS选择器中是什么意思?

我们看:

正如Joel H.在评论中指出的那样,Chrome自此之后就弃用了/ deep /组合器,并在IE中给出了语法错误。

我们看:

/ deep /不再存在,所以我认为我们不应该支持它。>>>是新版本,可能应该支持

我们看:

/ deep /选择器还具有别名>>>。我们可以互换使用两者之一。

显然,信任Angular 2文档是明智的,但是由于所有这些相互矛盾的信息,我有点犹豫。

实际上,在最新版本的Microsoft Visual Studio Code中,两者/deep/>>>创建错误,尽管尽管有错误,但它们都可以工作。

我的问题是双重的:

  1. / deep /在这里停留吗?我们是否有任何来源,报价单或任何说明可以采用的规范中的任何内容?还是已正式弃用?

  2. 我们是否可以在不完全禁用语法检查的情况下抑制Visual Studio Code中的此错误?

答案1

小编典典
  1. / deep /在这里停留吗?我们是否有任何来源,报价单或任何说明可以采用的规范中的任何内容?还是已正式弃用?

/deep/语法已过时,最后一次出现在2014年的css-scoping
中,并且>>>大约半年前在Chrome 45中已弃用该语法。

计划将穿透阴影的后代组合器的整个概念完全从ShadowDOM中删除。实现可以完全将其删除,也可以将其别名为常规后代组合器(这取决于将来对ShadowDOM的实现方式可能有意义,也可能没有意义)。

  1. 我们是否可以在不完全禁用语法检查的情况下抑制Visual Studio Code中的此错误?

不幸的是没有。

出于兼容性考虑,Angular允许在仿真视图封装中使用这两种方法,但是强烈建议作者继续使用>>>,因为从/deep/技术上来说,该功能现在无效,因此本机视图封装不支持该功能。

Angular-如何在Angular2中使用jQuery及其插件

Angular-如何在Angular2中使用jQuery及其插件

搭建好环境后

一:首先在index.html中引用jquery,就像我们以前做的那样

    

二:然后我们编写我们的app.component.ts

import { Component,OnInit} from ''@angular/core'';
declare var $:any;
@Component({
  selector: ''app-root'',
  templateUrl: ''./app.component.html'',
  styleUrls: [''./app.component.css'']
})
export class AppComponent  implements OnInit{
  ngOnInit()
  {
    $("#title").html("<p>this is a string from jQuery html setting</p>");
  }
}

  首先需要使用declare生命我们的jQuery,使之成为一个可用的变量,然后,我们需要导入OnInit模块并实现,我们编写的jquery代码就在这里,文中展示了我们向id为title的标签替换内容,HTML页面是这样的

<div id="title">
</div>

  这就意味着我们可以在Angular2中正常使用jQuery了

 

jquery插件引用:

  接下来做个简单的jQuery插件使用的例子,首先找一个我们要使用的jQuery插件,我用的是这个,3D视觉图片

  一:首先在index.html 中引用

  

  二:然后在我们刚才的app.component.ts中的ngOnInit中写入以下初始化插件代码

ngOnInit()
  {
    $(".card").faceCursor({}); 
    $("#title").html("<p>this is a string from jQuery html setting</p>");
  }

    然后我们编写html,css,运行就可以了

 

angular2 – 在Angular 2中动态添加事件侦听器

angular2 – 在Angular 2中动态添加事件侦听器

早上所有,
我刚刚开始使用Angular 2,我想知道是否有人可以告诉我从元素动态添加和删除事件侦听器的最佳方式。

我有一个组件设置。当模板中的某个元素被点击时,我想添加一个监听器mousemove到同一个模板的另一个元素。然后我想删除这个监听器,当第三个元素被点击。

我有种工作只是使用普通的Javascript来抓取元素,然后调用标准的addEventListener(),但我想知道是否有一个更多的“Angular2.0”的方式,我应该研究。

干杯任何建议:)

angular2的方式是使用listen或listenGlobal从 Renderer

例如,如果要向组件添加一个单击事件,则必须使用Renderer和ElementRef(这也为您提供了使用ViewChild或检索nativeElement的任何选项)

constructor(elementRef: ElementRef,renderer: Renderer) {

    // Listen to click events in the component
    renderer.listen(elementRef.nativeElement,'click',(event) => {
      // Do something with 'event'
    })
);

你可以使用listenGlobal,让你访问文档,正文等。

renderer.listenGlobal('document',(event) => {
  // Do something with 'event'
});

注意,因为beta.2都listen和listenGlobal返回一个函数来删除侦听器(见beta001的changelog中的breaking changes部分)。这是为了避免大型应用程序中的内存泄漏(参见#6686)。

所以要删除我们动态添加的侦听器,我们必须将listen或listenGlobal赋值给一个将保存函数的变量,然后执行它。

// listenFunc will hold the function returned by "renderer.listen"
listenFunc: Function;

// globalListenFunc will hold the function returned by "renderer.listenGlobal"
globalListenFunc: Function;

constructor(elementRef: ElementRef,renderer: Renderer) {

    // We cache the function "listen" returns
    this.listenFunc = renderer.listen(elementRef.nativeElement,(event) => {
        // Do something with 'event'
    });

    // We cache the function "listenGlobal" returns
    this.globalListenFunc = renderer.listenGlobal('document',(event) => {
        // Do something with 'event'
    });
}

ngOnDestroy() {
    // We execute both functions to remove the respectives listeners

    // Removes "listen" listener
    this.listenFunc();

    // Removs "listenGlobal" listener
    this.globalListenFunc();
}

这里有一个例子工作的plnkr。该示例包含listen和listenGlobal的用法。

更新

plnkr更新到beta.12和我改进的答案和plnkr,以更清楚如何删除侦听器。

angular2 – 在Angular 2中等价于$compile

angular2 – 在Angular 2中等价于$compile

我想手动编译一些包含指令的HTML。在Angular 2中相当于$ compile是什么?

例如,在Angular 1中,我可以动态编译一个HTML的片段并将其附加到DOM:

var e = angular.element('<div directive></div>');
element.append(e);
$compile(e)($scope);
注意:由于@BennyBottema在注释中提及,DynamicComponentLoader现在已被弃用,因此这个答案也是如此。

Angular2没有任何$compile等效。你可以使用DynamicComoponentLoader和hack with ES6类来动态编译你的代码(见plunk):

import {Component,DynamicComponentLoader,ElementRef,OnInit} from 'angular2/core'

function compiletoComponent(template,directives) {
  @Component({ 
    selector: 'fake',template,directives
  })
  class FakeComponent {};
  return FakeComponent;
}

@Component({
  selector: 'hello',template: '<h1>Hello,Angular!</h1>'
})
class Hello {}

@Component({
  selector: 'my-app',template: '<div #container></div>',})
export class App implements OnInit {
  constructor(
    private loader: DynamicComponentLoader,private elementRef: ElementRef,) {}

  ngOnInit() {} {
    const someDynamicHtml = `<hello></hello><h2>${Date.Now()}</h2>`;

    this.loader.loadIntoLocation(
      compiletoComponent(someDynamicHtml,[Hello])
      this.elementRef,'container'
    );
  }
}

但它只会工作,直到html解析器里面的angular2核心。

angular2 – 我如何在angular 2中使用angular.copy

angular2 – 我如何在angular 2中使用angular.copy

我如何复制一个对象,并失去它在角2的参考?
使用angular 1我使用angular.copy(对象),但我得到一些错误使用角2。

EXCEPTION:ReferenceError:angular未定义

假设你使用ES6,你可以使用var copy = Object.assign({},original)。在现代浏览器中工作;如果你需要支持旧的浏览器检查这个 polyfill

更新:

使用TypeScript 2.1,ES6简写对象扩展符号可用:

const copy = { ...original }

我们今天的关于在Angular 2中使用/ deep /和>>>angular declare的分享就到这里,谢谢您的阅读,如果想了解更多关于Angular-如何在Angular2中使用jQuery及其插件、angular2 – 在Angular 2中动态添加事件侦听器、angular2 – 在Angular 2中等价于$compile、angular2 – 我如何在angular 2中使用angular.copy的相关信息,可以在本站进行搜索。

本文标签: