我们使用这个非常棒的Angular2 Seed创建了一个Angular 2应用程序。所以我的问题是,如何升级这个Angular 1指令:
import template from './sbgOutlineButton.html!text';
var app = angular.module('sbgOutlineButton', []);
app.directive('sbgOutlineButton', function() {
let link = function(scope, element, attributes) {
if (attributes.icon === undefined) {
let materialIcon = element.find('i.material-icons');
materialIcon.addClass('hidden');
}
};
return {
link: link,
restrict: 'E',
template: template,
replace: true,
transclude: true,
scope: { icon: '@' }
};
});
export default app;
这样我就可以在下面的Angular 2组件中使用它:
import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';
import { UpgradeAdapter } from '@angular/upgrade';
@Component({
moduleId: module.id,
selector: 'test-page',
templateUrl: 'testpage.page.html',
styleUrls: ['testpage.page.css']
})
export class TestPage implements OnInit {
constructor() { }
ngOnInit() { }
}
你们有没有想过我将如何做到这一点?它甚至可能吗?因为我在研究期间发现的很多其他文章都表明你的“基础”应用程序应该是Angular 1 ...
提前致谢。 弗朗索瓦
答案 0 :(得分:0)
如何将angular1指令转换为angular2指令?
注意:我不知道它是否有用,只是看一看。
点击此处的演示: https://plnkr.co/edit/4Fhtm76iJl0aQmgjO7n0?p=preview
<强> customeDirective.ts 强>
import {Directive, Attribute,ElementRef,Renderer} from '@angular/core';
@Directive({
selector: '[myAttr]'
})
export class myDir {
constructor(@Attribute('icon') private icon,private el:ElementRef,private rd: Renderer){
console.log(this.icon);
if(this.icon===null){ //<--- you can play here as per your need.
console.log('icon is undefined');
}
else{
rd.setElementClass(el.nativeElement, 'myClass',true);
}
console.log(el.nativeElement);
}
}
<强> AppComponent.ts 强>
//our root app component
import {Component} from '@angular/core';
import {myDir} from 'src/customDirective';
@Component({
selector: 'my-app',
directives:[myDir],
template:
`
<style>
.myClass{
color:red;
background:yellow;
}
</style>
<div myAttr icon="myIcon">Angular2</div> <!-- icon attribute is present so it will add the class -->
<!-- OR USE BELOW HTML INSTEAD OF ABOVE -->
<div myAttr>Angular2</div> <!-- icon attribute is not present so it gives null -->
`
})
export class App {}
答案 1 :(得分:-5)
您需要使用"@angular/upgrade": "2.0.0-rc.4",
升级到angular2
Guide
因为我在我的期间发现了很多其他文章 研究表明你的基础&#34;应用程序应该是Angular 1 ...
如果你有一个已经有角度的1项目,你想要升级到一个项目。 Angular2不需要angular1作为基础
在angular2
中编写指令import { Directive, ElementRef, Input } from '@angular/core';
@Directive({ selector: '[myHighlight]' })
export class HighlightDirective {
constructor(el: ElementRef) {
el.nativeElement.style.backgroundColor = 'yellow';
}
}
import { Component } from '@angular/core';
import { HighlightDirective } from './highlight.directive';
@Component({
selector: 'my-app',
templateUrl: 'app/app.component.html',
directives: [HighlightDirective]
})
export class AppComponent { }
你不需要将angular1混合成两个......