Можете ли вы поместить интерполяцию строк в нг-контент?

Я стараюсь не кодировать какие-либо огромные обходные пути для такого простого варианта использования (ниже). Я видел много запутанных способов сделать то, что проецируется динамикой ng-контента, которые работают для этих конкретных случаев, но никогда не выглядели одобренными Миско. Я надеюсь узнать, есть ли лучшая практика для этого и какой она может быть.

Спасибо!

В приведенном ниже коде я запутался в этой части:

{{this.userVM.currentUser.firstName}} {{this.userVM.currentUser.lastName}}

И я предполагаю, что он не работает, потому что он содержится в элементах ng-content. Я думаю, что внутри находится нг-контент, который должен быть статичным... но это кажется крайне ограниченным, поэтому мне нужно было спросить.

Так или иначе, моей целью было сделать эту работу:
новый пользователь security.component.html:

<modal-base [display]="this.userRequestConfirmModal" [yesFunction]='this.confirmFinalizeUser()'>Finalize
  {{this.userVM.currentUser.firstName}} {{this.userVM.currentUser.lastName}}'s
  account?
  <br>
  <br> The user will be contacted with their login
  <br> information at this time.</modal-base>

Я просто пытался преобразовать код ниже в код выше, но не получилось.

<div *ngIf='userRequestConfirmModal' class='validation-modal-overlay'>
  <div class='validation-modal-window small-modal'>
    <div class="validation-modal-toolbar">
      <div class="validation-modal-close" (click)="newlevel2(null); newlevel3(null)">
        <span class="icon-x"></span>
      </div>
    </div>
    <div class='validation-modal-content'>
      Finalize {{this.userVM.currentUser.firstName}} {{this.userVM.currentUser.lastName}}'s
      account?
      <br>
      <br> The user will be contacted with their login
      <br> information at this time.
    </div>
    <div class="buttons-spaced">
      <button autofocus (click)="this.userRequestConfirmModal=!this.userRequestConfirmModal"
        class="continue-cancel-options">No, stay</button>
      <button autofocus (click)="confirmFinalizeUser()" class="continue-cancel-options">Yes</button>
    </div>
  </div>
</div>



Вот и все остальное. Довольно просто

Это модальный-base.component.ts

import { Component, OnInit, Input } from '@angular/core';

@Component({
  selector: 'modal-base',
  templateUrl: './modal-base.component.html',
  styleUrls: ['./modal-base.component.css']
})
export class ModalBaseComponent implements OnInit {

  @Input() display: boolean = false;
  @Input() twoButtons: boolean = false;
  @Input() closeFunction: void;
  @Input() yesFunction: void;
  @Input() leftButtonText: string = 'No, stay';
  @Input() rightButtonText: string = 'Yes';

  constructor() { }

  ngOnInit() {
  }

  // defaultErrorYesFunction() {
  //   alert('when using the two button modal you must specify the "yesFunction()" please see the modal-base component to troubleshoot');
  //   console.error('when using the two button modal you must specify the "yesFunction()" please see the modal-base component to troubleshoot');
  // }
}

модальный-base.component.ts

<div *ngIf='display' class='validation-modal-overlay'>
  <div class='validation-modal-window small-modal'>
    <div class="validation-modal-toolbar">
      <div class="validation-modal-close" (click)="display=!display; closeFunction">
        <span class="icon-x"></span>
      </div>
    </div>
    <div class='validation-modal-content'>
      <ng-content></ng-content>
    </div>
    <ng-template class="buttons-spaced" *ngIf="twoButtons; else oneButton">
      <button autofocus (click)="this.display=!this.display" class="continue-cancel-options">{{leftButtonText}}
      </button>
      <button autofocus (click)="yesFunction" class="continue-cancel-options">{{rightButtonText}}</button>
    </ng-template>
    <ng-template #oneButton class="buttons-centered">
      <button autofocus (click)="display=!display; closeFunction" class="ok-button">OK</button>
    </ng-template>
  </div>
</div>

0 ответов

Другие вопросы по тегам