Добавление новой строки в MatDialog Content Angular 7

Я использую MatDialog и пытаюсь добавить новую строку в определение контента. И \n, и </b> этого не делают. Есть ли другой способ без необходимости вручную заходить в html и изменять его, поскольку это повторно используемый компонент:

var status: MatDialogRef<GenericDialogComponent> this.dialog.open(GenericDialogComponent,{
     width: '400px',
    data: {title: "Sample Title?", content: "Document " + this.docID + " has been saved. The users email address is provied below:\n\n"+this.email+"</b>"} });

HTML

<h1 mat-dialog-title>{{data.title}}</h1>
<div mat-dialog-content>
  <p>{{data.content}}</p>
</div>
<div mat-dialog-actions>
  <button mat-button (click) = "Cancel()">Cancel</button>
  <button mat-button (click) = "Ok()" cdkFocusInitial>Ok</button>
</div>

Простой <br> тоже не работает? Я предполагаю, что это не требует HTML

Tim VN 12.04.2019 15:38

Нет, это не работает, и для этого требуется html

Flash 12.04.2019 15:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
6
2
7 436
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Пытаться:

<div mat-dialog-content [innerHtml] = "'<p>' + data.content + '</p>'">

РЕДАКТИРОВАТЬ Ответ @Christian Benseler лучше/красивее.

Это не innerHtml, это innerHTML

Christian Benseler 12.04.2019 15:47

На самом деле это не имеет значения.

Tim VN 12.04.2019 15:50
Ответ принят как подходящий

Вы можете использовать свойство [innerHTML]:

<p [innerHTML] = "data.content"></p>

и вместо \n\n используйте тег html br.

const status: MatDialogRef<GenericDialogComponent> this.dialog.open(GenericDialogComponent,{
     width: '400px',
    data: {title: "Sample Title?", content: `Document ${this.docID} has been saved. The users email address is provied below:<br /><b>${this.email+}</b>`} });

идет ли </br> в кавычки, как 'next line </b>', потому что он все еще не делает этого, но все еще отлаживает спасибо

Flash 12.04.2019 15:58

Почему вы используете </b> без открывающего <b>?

Christian Benseler 12.04.2019 17:12

@Flash Я обновил свой ответ текущей строкой содержимого (используя строку шаблона).

Christian Benseler 12.04.2019 17:13

это так странно, потому что у меня не было открытия? с ответом @TimVns это сработало без него?

Flash 12.04.2019 17:18

Попробуйте использовать <pre> HTML-тег, если вам нужно/хотите использовать \n.

Но я бы предложил Ответ Кристиана Бенселера !

На случай, если другие сочтут это полезным при нажатии на этот ответ, для своих нужд я скопировал конфигурацию общего диалога и службы из Создание повторно используемого диалогового модуля с помощью Angular Material.

И, используя более ранний ответ, где HTML <br/> был установлен в строку в коде, я отделил это с помощью канала (полезно и для других потребностей отображения), конечно, это предполагает, что диалог отображает только небольшой объем данных, а не показывает целую главу книги ;-)

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'newlineToBR',
})
export class NewlineToBRPipe implements PipeTransform {
  transform(value: string): string {
    return value.replace(/\n/g, '<br/>');
  }
}

в компоненте общего диалога:

<div mat-dialog-content>
      <p class = "dialog-message" [innerHTML] = "data.message | newlineToBR"></p>
    </div>

затем в компоненте, вызывающем диалоговое окно, нет HTML-тегов, просто убедитесь, что в редакторе добавлены новые строки и используется правильный тип кавычек:

const options = {
title: 'Confirm De-select of Review Required',
message: `If you select OK then all the following fields will be reset:
- start date
- assigned person`,
cancelText: 'CANCEL',
confirmText: 'OK',

};

Это сработало для меня:

        let warningMessages = ['message1','message2','message3'];

        const config=  {
            panelClass:'msg-dialog-container',
            data: {
                type:WARNNING,
                showConfirm:true,
                message: warningMessages
            }};

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