Привязать файл внешнего компонента HTML к данным json со страницы вызова в Angular

с Angular 14 я использую сетку ag для отображения строк данных на странице моего основного компонента. Я выбираю строку, нажимаю кнопку и хочу вызвать HTML-файл вспомогательного компонента в отдельном каталоге, содержащем собственный машинописный файл. Я могу собирать данные строки как данные JSON, но я хочу вставить вспомогательный компонент HTML на свою главную страницу.

Q: Как я могу связать вспомогательный компонент html, чтобы он отображался в моем основном html?

Структура каталогов

ClientApp
   src
     app
        MyObject
            MyObject-grid-main
                 MyObject-grid-main.css
                 MyObject-grid-main.html
                 MyObject-grid-main.ts
            MyObject-grid-auxiliary
                 MyObject-grid-auxiliary.css
                 MyObject-grid-auxiliary.html
                 MyObject-grid-auxiliary.ts

MyObject-grid-main.html

<button (click) = "getSelectedRowData()">Get More Info</button>
<ag-grid-angular #agGrid id = "ag-grid"></ag-grid/angular>
...
<div>
<!-- Here I want to insert MyObject-grid-auxiliary.html after I bind the JSON data -->
</div>


MyObject-grid-main.ts

@ViewChild('agGrid' grid!: GridApi;
getSelectedRowData()
{
    const selectedData = this.grid.getSelectedRows();
    const jsonDataString = JSON.stringify(selectedData);
    alert(`Selected Data:\n${jsonDataString}`); // display in popup

   // Here is where I want to bind the JSON data to the MyObject-grid-auxiliary.html
   // and have it appear in the place holder above

}

MyObject-grid-auxiliary.html

<h2 class = "title">{{data.title}}</h2>
...
<span>{{data.remarks}}</span>
...
<tr *ngFor = "let pos of data.locations">
                <td>
                  <span>{{pos.position.lat}}</span>
                </td>
                <td>
                  <span>{{pos.position.long}}</span>
                </td>
                <td>
                  <span>{{pos.lastReportedOnDateTime}}</span>
                </td>
              </tr>
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы можете просто передать свойство класса MyObject-grid-main.ts, для которого сначала задано значение null, в качестве ввода MyObject-grid-auxiliary, а затем проверить вспомогательный компонент с помощью ngIf, когда данные установлены, а затем показать свои материалы.

в getSelectedRowData установите свойство класса, и содержимое должно отображаться во вспомогательном компоненте.

Обновление с примером:

в свой MyObject-grid-main.ts добавьте новое свойство под названием

auxiliarData = null;

в MyObject-grid-main.html добавьте вспомогательный компонент там, где вам нужно.

<myobject-grid-auxiliary [data] = "auxiliarData"></myobject-grid-auxiliary>

в функцию getSelectedRowData добавляем логику обновления, пример

const selectedData = this.grid.getSelectedRows();
const jsonDataString = JSON.stringify(selectedData);
alert(`Selected Data:\n${jsonDataString}`);
...
this.auxiliarData = selectedData;

в MyObjectGridAuxiliary.ts

export class MyObjectGridAuxiliary {
    @Input() data = '';
}

в MyObject-grid-auxiliary.html

<div *ngIf = "data"> put your html here ... </div>

поэтому всякий раз, когда определяется MyObjectGridAuxiliary.data, компонент будет показывать вам html с вашими данными.

Мне нужно оставаться на главной странице. Ваше предложение позволит это сделать? не могли бы вы предоставить фрагмент кода для него? Я еще не очень хорошо разбираюсь в angular :\

fifamaniac04 01.11.2022 16:52

я добавил пример

gaspx 01.11.2022 20:03

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