article_view.ts
1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { bundle, Input, Inject, Component, Directive } from 'ng-forward';
import {NoosferoArticleBlog} from "../blog/blog.component";
@Component({
selector: 'noosfero-default-article',
templateUrl: 'app/components/noosfero-articles/article/article.html'
})
export class ArticleDefaultView {
@Input() article: any;
@Input() profile: any;
}
@Component({
selector: 'noosfero-article',
template: 'not-used',
directives: [ArticleDefaultView, NoosferoArticleBlog]
})
@Inject("$element", "$scope", "$injector", "$compile")
export class ArticleView {
@Input() article: any;
@Input() profile: any;
directiveName: string;
ngOnInit() {
let specificDirective = 'noosfero' + this.article.type;
this.directiveName = "noosfero-default-article";
if (this.$injector.has(specificDirective + 'Directive')) {
this.directiveName = specificDirective.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
}
this.$element.replaceWith(this.$compile('<' + this.directiveName + ' [article]="ctrl.article" [profile]="ctrl.profile"></' + this.directiveName + '>')(this.$scope));
}
constructor(
private $element: any,
private $scope: ng.IScope,
private $injector: ng.auto.IInjectorService,
private $compile: ng.ICompileService) {
}
}