Angular: установка свойства компонента вне компонента

У меня есть страница Angular, которая использует компонент для отображения некоторых своих свойств. Но свойства компонента не отображаются на странице. Вот код:

HTML-страница (testPage.component.html)

<p>title: {{title}}</p>
<p>another title: {{anotherTitle}}</p>

TypeScript (testPage.component.ts)

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

@Component({
  selector: 'app-testPage',
  templateUrl: './testPage.component.html',
  styleUrls: ['./testPage.component.css']
})
export class TestPageComponent implements OnInit {
  title: string;
  anotherTitle = "This is another title";

  setTitle(): void {
    this.title = "This is title!!";
    console.info('This is title', this.title);
  }
}

var testPageComponent = new TestPageComponent();
//newBudgetComponent.title = "some title here!!"; //Also not working
testPageComponent.setTitle();

На странице anotherTitle заполняется нормально, но title не заполняется.

Функция setTitle регистрирует заголовок, но страница Angular не отображает значение.

Вот как выглядит страница:

Angular: установка свойства компонента вне компонента

Как установить свойство компонента вне компонента?

чего именно вы здесь пытаетесь достичь?

Pankaj Parkar 18.10.2018 20:45

Поделитесь, пожалуйста, вариантом использования. Вероятно, есть несколько способов сделать это, но, в конце концов, почему вы пытаетесь установить значение вне приложения?

random_user_name 18.10.2018 20:46
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
2
1 500
2

Ответы 2

Вы пытаетесь установить заголовок страницы? если да, то воспользуйтесь услугой Title

import { Title } from '@angular/platform-browser';

constructor(private titleService: Title)

this.titleService.setTitle("Title");

В противном случае используйте общую службу с субъектом поведения, если это не дочерний компонент, затем используйте Input

Есть несколько способов добиться этого. Во-первых, взаимодействие компонентов в Angular и то, как они отображаются на странице, немного менее прямолинейно, чем в примере, который вы пытаетесь показать. Пожалуйста, обратитесь к эта ссылка, чтобы узнать больше о жизненном цикле компонента в Angular.

Что касается установки значений свойств компонента, вот несколько примеров. Имейте в виду, что некоторые из них могут нуждаться в настройке, поскольку я не писал это в среде IDE / не запускал код.

Ваш пример уже делает это. Когда компонент создается, значение этого поля по умолчанию уже установлено. title = 'My Title'

Украшение вашей собственности с помощью @Input() позволяет передавать данные из родительского компонента в дочерний компонент. <my-child-component [title]='value-or-variable'></my-child-component>

Украшение свойства «компонента» (в данном случае дочернего компонента в родительском) с помощью декоратора @ViewChild() позволит родительскому компоненту иметь доступ к дочернему компоненту и работать с его свойствами. Имейте в виду, что указанный компонент должен быть дочерним по отношению к родительскому компоненту. @ViewChild(MyChildComponent) child: MyChildComponent;, затем после завершения цикла инициализации родительского компонента this.child.title = 'My Title';

Декорирование свойства «компонента» (в данном случае дочернего компонента в родительском или в любых потомках) декоратором @ContentChild() позволит родительскому компоненту иметь доступ к дочерним компонентам и работать с их потомками и свойствами. Имейте в виду, что указанный компонент может быть любым дочерним компонентом этого родителя. @ContentChild(MyDescendentComponent) descendent: MyDescendentComponent;, затем после завершения циклов инициализации this.descendent.title = 'My Title';

Предоставленные объекты могут быть введены в компонент и в идеале заданы значения для компонента в методе ngOnInit. Поставщик может быть установлен на нескольких разных уровнях, включая (но не ограничиваясь) компонентные модули. Эта ссылка гораздо более подробно описывает внедрение зависимостей, хотя он немного старше.

class MyComponent {
  constructor(myService: MyService) {}
}
//module
providers: [
  MyTitleToken,
],

//component
class MyComponent {
  constructor(public title: MyTitleToken) {}
}
//module
providers: [
  {provide: 'MyTitle', useValue: 'Hello Title'},
],

//component
class MyComponent {
  constructor(@Inject('MyTitle') title: string) {}
}

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