Рубрики
Без рубрики

Руководство по созданию многоразовых компонентов в угловых 2

Следуйте этим руководству и создайте свои собственные многоразовые компоненты в угловых 2 каркасах.

Автор оригинала: Anton Selin.

Отказ от ответственности: Прежде чем мы начнем, чтобы вы сможете следовать этому посту, у вас должно быть базовые знания Angular V2.x Framework.

Этот пост будет использовать Пункт Сайт в качестве примера. Если не имеет определенных функций, которые описаны в разделе «Подготовка окружающей среды», пожалуйста, найдите какую-то другую среду, описанную в этой статье.

Стол содержания

  • Подготовка окружающей среды
  • Создание компонента статьи
  • Создание статьи
  • Представляем
  • Несколько проекций
  • Последние замечания

Одним из самых больших изменений, которые мы видели, как мы переехали из угловых V1.X в угловой V2, было его Архитектура Отказ В версии кулаки библиотека была MVC, A Модель Просмотр контроллера Архитектура ; Во второй версии он стал Компонентная архитектура , который очень похож на MVC. Одной из главных идей Dehind, основанная на компонентах архитектура, заключается в том, что компоненты могут быть легко использованы в любой части нашего приложения. Вы, вероятно, уже построили много компонентов и повторно использовали их в вашем приложении.

Сегодня я постараюсь показать вам, как построить действительно универсальный и многоразовый компонент в угловой структуре. Основное внимание этой статьи станут проекцией контента, который назывался Транспортировка в угловой 1.

Подготовка окружающей среды

Для этого поста я собираюсь использовать онлайн-редактор Poleunker, потому что он позволяет нам строить примеры в угловых 2.

Выбрать правильную среду,

  1. Перейти клунку Веб-сайт
  2. Выберите возможность открыть редактор
  3. Создайте новый узор, выбрав угловые 2 в качестве предварительно определенной среды, например:

После того, как вы создали новый комплект с угловым уклоном 2 по умолчанию, у вас должно быть рабочее приложение. Если вы нажмете «запустить» в верхней части страницы, вы должны увидеть результаты рабочего приложения:

IMG2.PNG

Создание компонента статьи

Давайте создадим еще один компонент, который будет наш универсальный многоразовый компонент. В качестве примера я предлагаю создать компонент статьи с заголовком и телом статьи.

Нажмите «Новый файл» в меню слева и введите: SRC/статья/article.component.ts

Теперь давайте зарегистрируем наш компонент внутри модуля приложения, который находится внутри SRC/App.ts файл.

Создайте структуру компонента статьи – вы можете оставить его пустым на данный момент:

import { Component } from '@angular/core'

@Component({
  selector: 'article',
  template: `
    
Hello from article component
`, }) export class ArticleComponent { constructor() { } }

Теперь импортируйте свой компонент в компонент приложения и используйте его в шаблоне компонента приложений. В конце концов, он должен выглядеть так:

img3.png.png.

Создание статьи

Одним из вариантов создания статьи было его в нашем шаблоне компонента приложений:

Hello {{name}}

My Article

my article body

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

IMG4.PNG

Но в этой ситуации наша компонент статьи не выглядел очень многоразовым.

img5.png.

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

Представляем

Вот где вступает проекция контента.

Что делает проекцию контента настолько мощным, является его способность изменять содержание внутри компонента на основе потребностей приложения.

Чтобы использовать проекцию содержимого, мы должны перейти к нашу компонент статьи и использовать тег , который собирается включить содержимое статьи, которое мы можем пройти от компонента приложений.

Составьте следующие изменения в компоненте статьи:

@Component({
  selector: 'article',
  template: `
    

My Article

`, }) export class ArticleComponent { constructor() { } }

И теперь следующие изменения в компоненте приложения:

@Component({
  selector: 'my-app',
  template: `
    

Hello {{name}}

my article body 1


my article body 2

`, }) export class App { name:string; constructor() { this.name = 'Angular2' } }

Так что теперь вы можете увидеть результат. Содержание, которое мы определили внутри нашего компонента приложения, было проецировано в компонент статьи:

img6.png.png.

У нас еще есть небольшая проблема с заголовками нашего компонента статьи. Мы могли бы использовать вход для передачи текста на заголовок, но есть другое решение:

Несколько проекций

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

Во-первых, давайте пойдем и изменим код внутри нашего компонента статьи. У нас будет несколько прогнозов, которые будут отличаться от атрибутов. Код должен выглядеть так:

@Component({
 selector: 'article',
 template: `
   
`, }) export class ArticleComponent { constructor() { } }

И теперь, внутри нашего компонента приложения, пройдите следующие изменения:

@Component({
  selector: 'my-app',
  template: `
    

Hello {{name}}

My Article 2

my article body 1


My Article 2

my article body 2

`, }) export class App { name:string; constructor() { this.name = 'Angular2' } }

Если все было выполнено правильно, вы должны увидеть следующий результат:

img7.png.png.png

Таким образом, у нас будут действительно многоразовые компоненты, которые вы можете проецировать контент, который вам нужен для обоих заголовков, так и нижнего колонтитула, а также создавать положительные разделы вашего компонента и сделать проекцию (I.E. Раздел нижнего колонтитула и т. Д.)

Вот полностью работающий шлюп.

Последние замечания

В этой статье мы прошли, как построить очень конкретный вид многоразового компонента. Воспроизведение очень важно, когда вы программируете, и все, что мы можем сделать, чтобы уменьшить дублирование кода, собирается нам помочь. С помощью проекции контента мы можем создавать компоненты, чьи многоразовые части ограничены только внешними частями компонента, а внутренние части могут отличаться в зависимости от потребностей приложения. Это проекция контента, и это важный инструмент для нашего пояса при разработке приложений с угловыми 2 каркасами.