What is the alternative for “ng-include” in angular2?

前端 未结 3 1874
遥遥无期
遥遥无期 2021-02-19 21:40

Is there any alternate way in angular to achieve what ng-include does in angularjs?

3条回答
  •  情歌与酒
    2021-02-19 22:21

    //ng-include equivalent in Angular2/4
    // How to create directive for ng-clude in Angular2/4
    import {
        Directive,
        ElementRef,
        Input,
        OnInit
    } from '@angular/core';
    import {
        Headers,
        Http,
        Response
    } from '@angular/http';
    
    @Directive({
        selector: 'ngInclude'
    })
    export class NgIncludeDirective implements OnInit {
    
        @Input('src')
        private templateUrl: string;
        @Input('type')
        private type: string;
    
        constructor(private element: ElementRef, private http: Http) {
    
        }
        parseTemplate(res: Response) {
            if (this.type == 'template') {
                this.element.nativeElement.innerHTML = res.text();
            } else if (this.type == 'style') {
                var head = document.head || document.getElementsByTagName('head')[0];
                var style = document.createElement('style');
                style.type = 'text/css';
                style.appendChild(document.createTextNode(res.text()));
                head.appendChild(style);
            }
        }
        handleTempalteError(err) {
    
        }
        ngOnInit() {
            this.
            http.
            get(this.templateUrl).
            map(res => this.parseTemplate(res)).
            catch(this.handleTempalteError.bind(this)).subscribe(res => {
                console.log(res);
            });
        }
    
    }
    
    enter code here
    
        // html code
    
        <
        ngInclude src = "{{src}}"
    type = "template" > < /ngInclude>
    

提交回复
热议问题