https://testy-online.com
Тесты-оnline: психологические тесты, любовь и отношения, личность, воспитание и педагогика, красота и здоровье, тесты для девочек, тесты по IT-дисциплинам, тесты по IT-дисциплинам с ответами.
Email AperkotMax@gmail.com Студия Online-тестирования "AperkotMax"
53 теста по Психологии
36 тестов по IT
36 тестов по IT с ответами
Результаты тестирования в системе хранятся два календарных дня!!!
Тест с ответами по Angular: Привязка данных, директивы, паттерны проектирования в Angular.
Главная–> IT-тесты–> Тесты с ответами по IT дисциплинам–> Angular: Привязка данных, директивы, паттерны проектирования в Angular
Правильные ответы отмечены символом "+".

Тест с ответами по Angular: Привязка данных, директивы, паттерны проектирования в Angular.
28 22

1) JavaScript является языком у которого:

А) статическая типизация;

Б) динамическая типизация; +

В) сильная типизация;

Г) слабая типизация; +

Д) явная типизация;

Е) неявная типизация; +

Ж) абсолютная типизация;

З) относительная типизация;

2) Замыкание в JavaScript – это:

А) область видимости, которая формируется во время компиляции на этапе прохода исполнения;

Б) функция, у которой есть доступ к своей внешней функции по области видимости, даже после того, как внешняя функция прекратилась; +

В) проход компиляции, при котором интерпретатор просматривает код в поисках объявлений переменных и функций и поднимает эти объявления в верхнюю часть текущей области видимости;

Г) «синтаксический сахар» для JavaScript, который вводит более короткий синтаксис и который позволяет писать чистый и лаконичный код;

Д) шаблон проектирования, который может быть полезен в том случае, если нужно замаскировать некоторые переменные и предотвратить доступ к ним из конкретных областей видимости;

Е) комбинация функции и лексического окружения, в котором эта функция была объявлена; +

3) Укажите каким образом в языке JavaScript реализовано наследование классов:

А) с помощью ключевого слова prototype;

Б) с помощью метода Object.create();

В) с помощью ключевого слова extends; +

Г) с помощью метода constructor();

Д) с помощью ключевого слова new;

4) Пусть имеется файл main.ts (см. листинг 2.1) в приложении Angular и файл app.module.ts (см. листинг 2.2). Укажите, какой именно компонент будет использоваться в качестве основного при загрузке приложения Angular, и какое именно свойство используется для указания этого компонента.

  1. import { enableProdMode } from '@angular/core';
  2. import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
  3. import { AppModule } from './app/app.module';
  4. import { environment } from './environments/environment';
  5. if (environment.production) {
  6. enableProdMode();
  7. }
  8. platformBrowserDynamic().bootstrapModule(AppModule)
  9. .catch(err => console.error(err));
Листинг 2.1. Файл main.ts.
  1. import { BrowserModule } from '@angular/platform-browser';
  2. import { NgModule } from '@angular/core';
  3. import { AppRoutingModule } from './app-routing.module';
  4. import { AppComponent } from './app.component';
  5. @NgModule({
  6. declarations: [AppComponent],
  7. imports: [BrowserModule,AppRoutingModule],
  8. providers: [],
  9. bootstrap: [AppComponent]
  10. })
  11. export class AppModule { }
Листинг 2.2. Файл app.module.ts

А) свойство environment;

Б) компонент AppComponent; +

В) свойство bootstrap; +

Г) компонент AppModule;

Д) свойство imports;

Е) компонент NgModule;

Ж) компонент BrowserModule;

З) свойство declarations;

5) Укажите правильные утверждения по поводу директив в Angular 8:

А) директива – это обычный класс, написанный на typescript, к которому применяется декоратор Directive; +

Б) ngSwitch – это атрибутивная директива;

В) директивы предназначены для изменения структуры DOM-дерева; +

Г) директивы предназначены для изменения внешнего вида или поведения по-умолчанию элемента DOM-дерева; +

Д) ngFor – это структурная директива; +

Е) директивы предназначены для форматирования данных в таблице CSS;

Ж) ngClass – это структурная директива;

6) Директива в Angular может содержать:

А) всегда только один Input и один selector;

Б) несколько Input’ов и один selector; +

В) несколько селекторов, перечисленных через запятую; +

Г) в селекторе элемент input c атрибутами как целевой элемент HTML; +

7) Декоратор HostListener применяется в случаях, если:

А) необходимо связать события DOM и методы директивы для изменения стандартного поведения DOM-элемента при возникновении пользовательского события; +

Б) необходимо связать свойство класса со свойством DOM-элемента, к которому применяется директива для изменения стандартного вида DOM-элемента;

В) нужно синхронизировать значение полей форм и свойства модели форм для каждого элемента управления формы;

Г) необходимо повторение блока контента в заданной позиции, что может быть полезно для генерирования одного контента в нескольких местах с предотвращением дублирования;

8) Необходимо указать директиву, компонент и модуль приложения Angular (см. листинги 2.6 а-г), решающих следующую задачу: вывести на экран содержимое (см. рис. 2.3). При этом, при наведении мыши на словосочетание «Работа с директивами!» должен изменяться размер шрифта и цвета (font-size:30px, цвет:красный) (рис. 2.4). При наведении мыши на второй абзац «Тесты по Angular» также должен изменяться размер шрифта и цвета (font-size:30px, цвет:голубой) (рис. 2.5). Если курсор мыши находится за пределами указанных текстовых блоков, то их стилизация возвращается к первоначальному виду (font-size:18px, цвет:зелёный)(рис. 2.3).

Рис. 2.3.
Рис. 2.3.

Рис. 2.4.
Рис. 2.4.

Рис. 2.5.
Рис. 2.5.

Листинги 2.6-а;
  1. import {Directive, ElementRef, HostListener, Input} from '@angular/core';
  2. @Directive({
  3. selector: '[Color_zoom]'
  4. })
  5. export class Color_zoomDirective{
  6. @Input('Color2') Col2;
  7. @Input('Zoom2') size2;
  8. constructor(private element1:ElementRef,
  9. private element2:ElementRef) {
  10. this.element1.nativeElement.style.color='green';
  11. this.element2.nativeElement.style.fontSize='18px';
  12. }
  13. @HostListener('mouseenter') onMouseIn(){
  14. this.setColor(this.Col2);
  15. this.setFontSize(this.size2);
  16. }
  17. @HostListener('mouseleave') onMouseOut(){
  18. this.setColor('green');
  19. this.setFontSize(18);
  20. }
  21. setColor(value: string): void{
  22. this.element1.nativeElement.style.color = value;
  23. }
  24. setFontSize(value: number | string): void {
  25. this.element2.nativeElement.style.fontSize = `${value}px`
  26. }
  27. }
  28.  
Директива color_zoom.directive.ts;
  1. import { Component } from '@angular/core';
  2. @Component({
  3. selector: 'hello-world',
  4. template: `<div>
  5. <p style="font-size:18px;color:green">Angular в действии.
  6. <span Color_zoom [Color2]="red" [Zoom2]="30">{{name}}!</span></p>
  7. <p Color_zoom [Color2]="blue" [Zoom2]="30">
  8. Тесты по Angular
  9. </p>
  10. </div>`
  11. })
  12. export class HelloWorldComponent {
  13. name:string;
  14. constructor(){
  15. this.name='Работа с директивами';}
  16. }
Компонент app.component.ts;
  1. import { NgModule } from '@angular/core';
  2. import { BrowserModule } from '@angular/platform-browser';
  3. import { FormsModule } from '@angular/forms';
  4. import { HelloWorldComponent } from './app.component';
  5. import { Color_zoomDirective} from './color_zoom.directive';
  6. @NgModule({
  7. imports: [ BrowserModule, FormsModule ],
  8. declarations: [ HelloWorldComponent, Color_zoomDirective],
  9. bootstrap: [ HelloWorldComponent ] })
  10. export class AppModule { }
Модуль app.module.ts;
Листинги 2.6-б;
  1. import {Directive, ElementRef, HostListener, Input} from '@angular/core';
  2. @Directive({
  3. selector: '[Color_zoom]'
  4. })
  5. export class Color_zoomDirective{
  6. @Input('Color2') Col2;
  7. @Input('Zoom2') size2;
  8. constructor(private element1:ElementRef,
  9. private element2:ElementRef) {
  10. this.element1.nativeElement.style.color='green';
  11. this.element2.nativeElement.style.fontSize='18px';
  12. }
  13. @HostListener('mouseenter') onMouseIn(){
  14. this.setColor(this.Col2);
  15. this.setFontSize(this.size2);
  16. }
  17. @HostListener('mouseleave') onMouseOut(){
  18. this.setColor('green');
  19. this.setFontSize(18);
  20. }
  21. setColor(value: string): void{
  22. this.element1.nativeElement.style.color = value;
  23. }
  24. setFontSize(value: number | string): void {
  25. this.element2.nativeElement.style.fontSize = `${value}px`
  26. }
  27. }
  28.  
Директива color_zoom.directive.ts;
  1. import { Component } from '@angular/core';
  2. @Component({
  3. selector: 'hello-world',
  4. template: `<div>
  5. <p Color_zoom [Color2]="'red'" [Zoom2]="30">
  6. Angular в действии. {{name}}!</p>
  7. <p Color_zoom [Color2]="'blue'" [Zoom2]="30">
  8. Тесты по Angular
  9. </p>
  10. </div>`
  11. })
  12. export class HelloWorldComponent {
  13. name:string;
  14. constructor(){
  15. this.name='Работа с директивами';}
  16. }
Компонент app.component.ts;
  1. import { NgModule } from '@angular/core';
  2. import { BrowserModule } from '@angular/platform-browser';
  3. import { FormsModule } from '@angular/forms';
  4. import { HelloWorldComponent } from './app.component';
  5. import { Color_zoomDirective} from './color_zoom.directive';
  6. @NgModule({
  7. imports: [ BrowserModule, FormsModule ],
  8. declarations: [ HelloWorldComponent, Color_zoomDirective],
  9. bootstrap: [ HelloWorldComponent ] })
  10. export class AppModule { }
Модуль app.module.ts;
Листинги 2.6-в;
  1. import {Directive, ElementRef, HostListener, Input} from '@angular/core';
  2. @Directive({
  3. selector: '[Color_zoom]'
  4. })
  5. export class Color_zoomDirective{
  6. @Input('Color2') Col2;
  7. @Input('Zoom2') size2;
  8. constructor(private element1:ElementRef,
  9. private element2:ElementRef) {
  10. this.element1.nativeElement.style.color='green';
  11. this.element2.nativeElement.style.fontSize='18px';
  12. }
  13. @HostListener('mouseenter') onMouseIn(){
  14. this.setColor(this.Col2);
  15. this.setFontSize(this.size2);
  16. }
  17. @HostListener('mouseleave') onMouseOut(){
  18. this.setColor('green');
  19. this.setFontSize(18);
  20. }
  21. setColor(value: string): void{
  22. this.element1.nativeElement.style.color = value;
  23. }
  24. setFontSize(value: number | string): void {
  25. this.element2.nativeElement.style.fontSize = `${value}px`
  26. }
  27. }
Директива color_zoom.directive.ts;
  1. import { Component } from '@angular/core';
  2. @Component({
  3. selector: 'hello-world',
  4. template: `<div>
  5. <p style="font-size:18px;color:green">Angular в действии.
  6. <span Color_zoom [Color2]="'red'" [Zoom2]="30">{{name}}!</span></p>
  7. <p Color_zoom [Color2]="'blue'" [Zoom2]="30">
  8. Тесты по Angular
  9. </p>
  10. </div>`
  11. })
  12. export class HelloWorldComponent {
  13. name:string;
  14. constructor(){
  15. this.name='Работа с директивами';}
  16. }
Компонент app.component.ts;
  1. import { NgModule } from '@angular/core';
  2. import { BrowserModule } from '@angular/platform-browser';
  3. import { FormsModule } from '@angular/forms';
  4. import { HelloWorldComponent } from './app.component';
  5. import { Color_zoomDirective} from './color_zoom.directive';
  6. @NgModule({
  7. imports: [ BrowserModule, FormsModule ],
  8. declarations: [ HelloWorldComponent, Color_zoomDirective],
  9. bootstrap: [ HelloWorldComponent ] })
  10. export class AppModule { }
Модуль app.module.ts;
Листинги 2.6-г;
  1. import {Directive, ElementRef, HostListener, Input} from '@angular/core';
  2. @Directive({
  3. selector: '[Color2]','[Zoom2]'
  4. })
  5. export class Color_zoomDirective{
  6. @Input('Color2') Col2;
  7. @Input('Zoom2') size2;
  8. constructor(private element1:ElementRef,
  9. private element2:ElementRef) {
  10. this.element1.nativeElement.style.color='green';
  11. this.element2.nativeElement.style.fontSize='18px';
  12. }
  13. @HostListener('mouseenter') onMouseIn(){
  14. this.setColor(this.Col2);
  15. this.setFontSize(this.size2);
  16. }
  17. @HostListener('mouseleave') onMouseOut(){
  18. this.setColor('green');
  19. this.setFontSize(18);
  20. }
  21. setColor(value: string): void{
  22. this.element1.nativeElement.style.color = value;
  23. }
  24. setFontSize(value: number | string): void {
  25. this.element2.nativeElement.style.fontSize = `${value}px`
  26. }
  27. }
Директива color_zoom.directive.ts;
  1. import { NgModule } from '@angular/core';
  2. import { BrowserModule } from '@angular/platform-browser';
  3. import { FormsModule } from '@angular/forms';
  4. import { HelloWorldComponent } from './app.component';
  5. import { Color_zoomDirective} from './color_zoom.directive';
  6. @NgModule({
  7. imports: [ BrowserModule, FormsModule ],
  8. declarations: [ HelloWorldComponent, Color_zoomDirective],
  9. bootstrap: [ HelloWorldComponent ] })
  10. export class AppModule { }
Компонент app.component.ts;
  1. import { NgModule } from '@angular/core';
  2. import { BrowserModule } from '@angular/platform-browser';
  3. import { FormsModule } from '@angular/forms';
  4. import { HelloWorldComponent } from './app.component';
  5. import { Color_zoomDirective} from './color_zoom.directive';
  6. @NgModule({
  7. imports: [ BrowserModule, FormsModule ],
  8. declarations: [ HelloWorldComponent, Color_zoomDirective],
  9. bootstrap: [ HelloWorldComponent ] })
  10. export class AppModule { }
Модуль app.module.ts;

А) Листинги 2.6-а;

Б) Листинги 2.6-б;

В) Листинги 2.6-в; +

Г) Листинги 2.6-г;

9) Укажите правильные утверждения, касающиеся привязки данных в Angular:

А) в Angular существует четыре односторонние привязки данных;

Б) в Angular существует две двухсторонних привязки данных;

В) в Angular существует три односторонних привязки данных; +

Г) в Angular существует одна двусторонняя привязка данных; +

Д) в Angular существует три двухсторонних привязки данных;

10) Укажите правильные формы привязки данных в Angular:

А) привязка метода компонента к событию в DOM; +

Б) привязка значения элемента HTML к свойству компонента Angular;

В) привязка свойства элемента DOM к значению компонента, при этом изменения свойства влечёт изменение значения компонента и наоборот;

Г) привязка элемента DOM к значению компонента Angular; +

Д) привязка свойства элемента DOM к значению компонента Angular; +

Е) привязка значения компонента Angular к событию в DOM;

Ж) привязка элемента DOM к значению компонента, при этом изменение элемента DOM приводит к изменению значения компонента и наоборот; +

З) привязка значения элемента HTML к методу компонента, при этом изменение значения элемента HTML приводит к изменению метода компонента и наоборот;

11) Укажите какой тип привязки данных используется в следующем фрагменте кода (см. рис. 2.7):

  1. import { Component } from '@angular/core';
  2. @Component({
  3. selector: 'my-app',
  4. template: `<img id="brand" class="brand" src="logo.png" [alt]="name">`
  5. })
  6. export class AppComponent {
  7. name = "Логотип сайта";
  8. }
Рис. 2.7. Укажите тип привязки данных в Angular.

А) двусторонняя привязка;

Б) привязка свойств (атрибутов) html-элемента; +

В) привязка событий;

Г) строчная интерполяция;

Д) привязка метода компонента;

12) Пусть имеется директива и компонент в Angular приложении (см. листинги 2.8а-б). Какой вид будет иметь страница сразу после загрузки приложения (см. рис. 2.9)?

  1. import {Directive, ElementRef, HostListener, Input} from '@angular/core';
  2. @Directive({
  3. selector: '[Color_zoom]'
  4. })
  5. export class Color_zoomDirective{
  6. @Input('Color2') Col2;
  7. @Input('Zoom2') Size2;
  8. constructor(private element1:ElementRef,
  9. private element2:ElementRef) {
  10. this.element1.nativeElement.style.color='green';
  11. this.element2.nativeElement.style.fontSize='18px';
  12. }
  13. @HostListener('mouseenter') onMouseIn(){
  14. this.setColor(this.Col2);
  15. this.setFontSize(this.Size2);
  16. }
  17. @HostListener('mouseleave') onMouseOut(){
  18. this.setColor('green');
  19. this.setFontSize(18);
  20. }
  21. setColor(value: string): void{
  22. this.element1.nativeElement.style.color = value;
  23. }
  24. setFontSize(value: number | string): void {
  25. this.element2.nativeElement.style.fontSize = `${value}px`
  26. }
  27. }
Рис. 2.8-а. Директива color_zoom.directive.ts.
  1. import { Component } from '@angular/core';
  2. @Component({
  3. selector: 'hello-world',
  4. template: `<div>
  5. <p>Angular в действии.
  6. <span Color_zoom [Color2]="'red'" [Zoom2]="30">{{name}}!</span></p>
  7. <p Color_zoom [Color2]="'blue'" [Zoom2]="30">
  8. Тесты по Angular
  9. </p>
  10. </div>`,
  11. styles: [`
  12. :host {font-size:18px;color:yellow; font-family:Segoe Print;}
  13. `]
  14. })
  15. export class HelloWorldComponent {
  16. name:string;
  17. constructor(){
  18. this.name='Работа с директивами';}
  19. }
Рис. 2.8-б. Компонент app.component.ts.

Рис. 2.3.
Рис. 2.9. Укажите какая страница будет отображена в браузере сразу после загрузки приложения: (а)(б)(в)(г)(д)(е)?

А) рис 2.9-а;

Б) рис 2.9-б;

В) рис 2.9-в; +

Г) рис 2.9-г;

Д) рис 2.9-д;

Е) рис 2.9-е;

13) Пусть есть Angular-приложение с именем «AngularApp», использующее Angular 9 и с установленной библиотекой Bootstrap версии v4.0.0-alpha.4. Для подключения к данному приложению Bootstrap необходимо (укажите правильно последовательность действий, см. таблицу 2.10):

I
прописать в файл Style.css следующую строку:
@import "~bootstrap/dist/css/bootstrap.css";
II
в файл angular-cli.json дописать следующие опции:
"options": {
                                        "styles": [
                                        "node_modules/bootstrap/dist/css/bootstrap.min.css"
                                        ],
                                        "scripts": [
                                        "node_modules/jquery/dist/jquery.min.js",
                                        "node_modules/bootstrap/dist/js/bootstrap.min.js"
                                        ]
                                        }
III
в файл angular.json дописать следующие опции:
"options": {
                                        "styles": [
                                        "node_modules/bootstrap/dist/css/bootstrap.min.css"
                                        ],
                                        "scripts": [
                                        "node_modules/jquery/dist/jquery.min.js",
                                        "node_modules/bootstrap/dist/js/bootstrap.min.js"
                                        ]
                                        }
IV
перезапустить приложение Angular командой:
ng new AngularApp
V
перезапустить приложение Angular командой:
ng serve --open
VI
в файле package.json отредактировать блок “dependencies” для bootstrap следующим образом:
"bootstrap": "^4.0.0-alpha.4", "~bootstrap/dist/css/bootstrap.css",

А) II →IV;

Б) I→VI→V;

В) I→III→IV;

Г) III→V; +

Д) III→VI→V;

Е) II→V;

14) Укажите верные утверждения относительно RxJS:

А) RxJS - это Javascript библиотека для работы с синхронными потоками данных;

Б) RxJS – это реализация библиотеки ReactiveX в языке JavaScript; +

В) RxJS - это Javascript библиотека для работы с асинхронными потоками данных; +

Г) RxJS - это метод оптимизации скорости загрузки медиафайлов, некритичных для отображения страницы или взаимодействия с пользователями;

Д) RxJS – это поведенческий шаблон проектирования, который реализует у класса механизм, позволяющий объекту этого класса получать оповещения об изменении состояния других объектов и тем самым наблюдать за ними;

Е) RxJS - это название механизма, который используется в Angular для программирования асинхронных потоков данных в декларативном стиле;

15) Пусть имеется следующая структура папок в Angular –приложении с именем «Auction» (рис. 2.11). Содержимое файла product-service.ts представлено в листинге 2.12. Содержимое файла product-item.ts представлено в листинге 2.13. Укажите, как правильно импортировать класс Product из файла product-service.ts в компонент product-item.ts (2-ая строка в листинге 2.13)?

Рис. 2.11. Структура Angular-приложения «Auction»
Рис. 2.11. Структура Angular-приложения «Auction»

  1. export class Product {
  2. constructor(
  3. public id: number,
  4. public title: string,
  5. public price: number,
  6. public rating: number,
  7. public description: string,
  8. public categories: Array<string>) {
  9. }
  10. }
Рис. 2.12. Содержимое файла product-service.ts
  1. import {Component, Input} from '@angular/core';
  2. import {Product} from '???services/product-service';
  3. @Component({
  4. selector: 'auction-product-item',
  5. templateUrl: 'app/components/product-item/product-item.html'
  6. })
  7. export default class ProductItemComponent {
  8. @Input() product: Product;
  9. }
Рис. 2.13. Содержимое файла product-item.ts

А) import {Product} from '~/services/product-service';

Б) import {Product} from './services/product-service';

В) import {Product} from '../services/product-service';

Г) import {Product} from '../../services/product-service'; +

Д) import {Product} from '~/../../services/product-service';

Е) import {Product} from '/services/product-service';

Ж) import {Product} from '././services/product-service';

З) import {Product} from '~/././services/product-service';

И) import {Product} from 'd:/Angular_App/auction/app/services/product-service'; +

К) import {Product} from '~/auction/app/services/product-service';

16) C помощью декоратора @Input() можно:

А) передать данные из родительского компонента дочернему, сразу на несколько уровней иерархии;

Б) передать данные из родительского компонента дочернему, но только на один уровень иерархии; +

В) имитировать возникновение события ввода в дочернем компоненте и передать введённые данные родительскому компоненту;

Г) передать данные из дочернего компонента родительскому , но только на один уровень иерархии;

Д) передать данные из дочернего компонента родительскому , сразу на несколько уровней иерархии;

Е) имитировать возникновение события ввода в родительском компоненте и передать введённые данные дочернему компоненту;

17) Укажите пункты, которые необходимо выполнить при передаче данных из родительського компонента в дочерний:

А) в дочернем компоненте необходимо создать свойство с помощью декоратора @Input. В это свойство будем получать данные; +

Б) в родительском компоненте необходимо создать свойство с помощью декоратора @Output. Из этого свойства будем передавать данные в дочерний компонент;

В) в родительском компоненте необходимо создать свойство, которое будем передавать; +

Г) при вызове дочернего компонента, используя привязку свойства элемента DOM к значению компонента Angular, привязываем к свойству дочернего компонента данные из свойства родительского компонента; +

Д) при вызове дочернего компонента, используя привязку элемента DOM к значению компонента Angular, привязываем к элементу DOM родительского компонента данные из свойства дочернего компонента;

Е) в дочернем компоненте необходимо подключить модуль import {Input} from '@angular/core'; +

Ж) в родительском компоненте необходимо подключить модуль import {Output} from '@angular/core';

18) Для какого паттерна проектирования характерен следующий фрагмент кода (см. листинг 2.14):

  1. var object1 = myObject.getInstance();
  2. var object2 = myObject.getInstance();
  3. console.log( object1 === object2 ); // true
Листинг 2.14. Какой паттерн проектирования используется?

А) observer – наблюдатель;

Б) singleton – одиночка; +

В) factory – фабрика;

Г) decorator – декоратор;

Д) module – модульный;

19) Укажите основное назначение сервисов в Angular:

А) хранение данных в памяти; +

Б) хранение глобального состояния приложения; +

В) программирование асинхронных потоков данных в декларативном стиле;

Г) инкапсулирование бизнес-логики для решения проблемы повторения кода, если необходимо выполнить одну и ту же задачу в разных компонентах и классах; +

Д) получения данных из какого-либо источника данных; +

Е) преобразование данных прямо в HTML-шаблоне;

Ж) изменение внешнего вида или поведения DOM-элемента;

З) изолирование логической объединяющей структуры для компонентов, директив и фильтров;

20) Укажите правильные утверждения, характерные для паттерна Observer в JavaScript:

А) паттерн Observer переводится как Издатель-Подписчик;

Б) паттерн Observer переводится как Наблюдатель; +

В) идея паттерна Observer заключается в создании зависимости типа один ко многим; +

Г) идея паттерна Observer заключается в создании зависимости типа многие ко многим;

Д) паттерн Observer применяется тогда, когда необходимо передать запрос на выполнение одному из нескольких объектов, точно не определяя, какому именно объекту;

Е) для реализации паттерна Observer в Angular используется сторонняя библиотека (RxJS); +

Ж) паттерн Observer применяется тогда, когда необходимо добавить новые состояния к классам, при этом не изменяя их общую структуру;

З) паттерн Observer характеризуется отсутствием прямой связи между объектами Subject и Observer;

И) паттерн Observer характеризуется наличием прямой связи между объектами Subject и Observer; +

К) паттерн Observer характеризуется тем, что существует один наблюдаемый объект и множество наблюдателей. При изменении наблюдаемого объекта автоматически происходит оповещение всех наблюдателей; +