Ошибка: Нет провайдера для TemplateRef! угловой4

Я пытаюсь узнать, как мы можем использовать ссылку на шаблон в моем приложении angular4, так далеко от документации, которую я, кажется, понимаю, мы можем использовать представление из в templateRef, но когда я попытался реализовать то же самое, я получаю следующую ошибку

ОШИБКА Ошибка: Нет провайдера для TemplateRef!

ниже мой пример кода

import { Component, OnInit, EventEmitter, ViewChild, TemplateRef, ElementRef } from '@angular/core';
import { Observable } from 'rxjs';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  constructor(private template: TemplateRef<any>, private element: ElementRef) { }
  ngOnInit() {
    this.template.createEmbeddedView(this.element);
  }
}

<ng-template>
    <div style='border: solid 2px yellow;
    width: 100%;
    height: 50px;
    background-color: #adadad;'>

    </div>
</ng-template>
<div style='border: solid 2px red;
    width: 100%;
    height: 180px;
    background-color: #adadad;'>

</div>

здесь то, что я хочу реализовать, - это поместить html, присутствующий внутри компонента внутри файла .

ОБНОВЛЕНИЕ 1

я изменил свой код на этот

@ViewChild('tmp1') template: TemplateRef<any>;
  constructor(private element: ElementRef) { }
  ngOnInit() {
       this.template.createEmbeddedView(this.element.nativeElement);
  }


<ng-template #tmp1>
    <div style='border: solid 2px yellow;
    width: 100%;
    height: 50px;
    background-color: #adadad;'>

    </div>
</ng-template>
<div style='border: solid 2px red;
    width: 100%;
    height: 180px;
    background-color: #adadad;'>

</div>

но все же я не могу вставить элемент внутри шаблона


person Lijin Durairaj    schedule 12.01.2018    source источник
comment
используйте @ViewChild для private template: TemplateRef<any> вместо внедрения конструктора   -  person Max Koretskyi    schedule 12.01.2018


Ответы (1)


Поскольку вы указываете templateURL и styleURL, похоже, что вы используете Angular 5, а не Angular 4. В этом случае вы хотите поместить свой шаблон/html в файл шаблона, указанный вами в шаблоне. то есть app.component.html

person Abelard Chow    schedule 12.01.2018
comment
можно даже в угловой 2,4. - person Aravind; 12.01.2018
comment
Для AngularJS 4 атрибутом является «шаблон» внутри @Componet. В приведенном выше коде используется templateUrl, новая функция AngularJS 5. - person Abelard Chow; 12.01.2018
comment
привет @Aravind, не могли бы вы увидеть мой вопрос об обновлении, я все еще не могу его реализовать - person Lijin Durairaj; 12.01.2018
comment
Не существует такой вещи, как AngularJS 4 или AngularJS 5. AngularJS — это v1.x. - person Daniel Kucal; 29.04.2018