Угловая сетка | Начало работы с ag-Grid

  1. Обзор учебника
  2. Оглавление
  3. Включить сортировку и фильтрацию
  4. Выбрать удаленные данные
  5. Включить выбор
  6. группирование
  7. Настройте внешний вид темы
  8. Резюме
  9. Следующие шаги

«Ag» часть ag-Grid означает «агностик». Внутренний механизм ag-Grid реализован на языке TypeScript с нулевыми зависимостями. ag-Grid поддерживает Angular через компонент-оболочку . Оболочка позволяет использовать ag-Grid в вашем приложении, как и любой другой компонент Angular, - вы передаете настройку через привязки свойств и обрабатывает события через привязки событий. Вы даже можете использовать компоненты Angular для настройки пользовательского интерфейса сетки и содержимого / поведения ячеек.

Обзор учебника

В этой статье мы проведем вас через необходимые шаги, чтобы добавить ag-Grid в существующий проект Angular, и сконфигурируем некоторые из его существенные особенности , Мы покажем вам некоторые основы сетки (передача свойств, использование API и т. Д.). В качестве бонуса мы также настроим внешний вид сетки с помощью переменных Sass.

Оглавление

Добавьте ag-Grid в ваш проект

Для целей этого урока мы собираемся создать приложение Angular с угловой CLI , Не беспокойтесь, если ваш проект имеет другую конфигурацию. ag-Grid и его оболочка Angular распространяются в виде пакетов NPM, которые должны работать с любой распространенной установкой связки модулей проекта Angular. Давайте следовать Угловые инструкции CLI - запустите следующее в вашем терминале:

npm install -g @ angular / cli ng новое my-app - стиль scss - маршрутизация false cd my-app ng serve

Мы передаем --style scss команде app scaffolding, чтобы мы могли настроить просмотр темы сетки через переменные Sass.

Если все идет хорошо, ng serve запустил веб-сервер. Вы можете открыть свое приложение на локальный: 4200 ,

В качестве следующего шага давайте добавим пакеты ag-Grid NPM. выполните следующую команду в my-app (вам может понадобиться новый экземпляр терминала):

npm install --save ag-grid-community ag-grid-angular npm install # при определенных обстоятельствах npm выполнит "автоматическое удаление". Этот шаг гарантирует, что все ожидаемые зависимости присутствуют

После нескольких секунд ожидания вы должны быть готовы. Давайте перейдем к фактическому кодированию! В качестве первого шага давайте добавим модуль ag-Grid Angular в наш модуль приложения (src / app / app.module.ts):

импортировать {BrowserModule} из '@ angular / platform-browser'; импортировать {NgModule} из '@ angular / core'; import {AppComponent} из './app.component'; импортировать {AgGridModule} из 'ag-grid-angular'; @NgModule ({объявления: [AppComponent], импорт: [BrowserModule, AgGridModule.withComponents ([])], поставщики: [], начальная загрузка: [AppComponent]}) класс экспорта AppModule {}

Вызов withComponents необходим для того, чтобы сетка могла использовать угловые компоненты в качестве ячеек / заголовков - вы можете пока игнорировать это.

Следующим шагом является добавление стилей ag-Grid - импортируйте их в styles.scss:

@import "~ ag-grid-community / dist / styles / ag-grid.css"; @import "~ ag-grid-community / dist / styles / ag-theme-balham.css";

Приведенный выше код импортирует таблицу стилей "структура" сетки (ag-grid.css) и одну из доступных тем сетки: (ag-theme-balham.css). Сетка содержит несколько разных тем; выберите тот, который соответствует вашему проекту. Вы можете настроить его дальше с помощью переменных Sass, метод, который мы рассмотрим далее.

Далее, давайте объявим базовую конфигурацию сетки. Отредактируйте src / app.component.ts:

import {Component} из '@ angular / core'; @Component ({selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss']}) класс экспорта AppComponent {title = 'app'; columnDefs = [{headerName: 'Make', поле: 'make'}, {headerName: 'Model', поле: 'model'}, {headerName: 'Price', поле: 'price'}]; rowData = [{make: 'Toyota', модель: 'Celica', цена: 35000}, {make: 'Ford', модель: 'Mondeo', цена: 32000}, {make: 'Porsche', модель: 'Boxter ', цена: 72000}]; }

Приведенный выше код представляет два основных свойства конфигурации сетки - определения столбцов (columnDefs) и данные (rowData). В нашем случае определения столбцов содержат три столбца; В каждой записи столбца указывается метка заголовка и поле данных, отображаемое в теле таблицы.

Наконец, давайте добавим определение компонента в наш шаблон. Отредактируйте app / app.component.html и удалите код скаффолда:

<ag-grid-angular style = "ширина: 500 пикселей; высота: 500 пикселей;" class = "ag-theme-balham" [rowData] = "rowData" [columnDefs] = "columnDefs"> </ ag-grid-angular>

Это определение компонента ag-grid с двумя привязками свойств - rowData и columnDefs. Компонент также принимает стандартный стиль и класс DOM. Мы установили класс ag-theme-balham, который определяет тему сетки. Как вы, возможно, уже заметили, класс CSS соответствует имени файла CSS, который мы импортировали ранее.

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

Включить сортировку и фильтрацию

Все идет нормально. Но разве не было бы неплохо иметь возможность сортировать данные, чтобы понять, какой автомобиль является наименее / наиболее дорогим? Что ж, включить сортировку в ag-Grid на самом деле довольно просто - все, что вам нужно сделать, это установить свойство сортировки для каждого столбца, по которому вы хотите иметь возможность сортировки.

columnDefs = [{headerName: 'Make', поле: 'make', сортируемый: true}, {headerName: 'Model', поле: 'model', сортируемый: true}, {headerName: 'Price', поле: 'price ', сортируемый: правда}];

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

В нашем приложении не слишком много строк, поэтому найти данные довольно просто. Но легко представить, как в реальном приложении могут быть сотни (или даже сотни тысяч!) Строк или много столбцов. В таком наборе данных фильтрация твой друг.

Как и в случае с сортировкой, включить фильтрацию так же просто, как установить свойство фильтра:

columnDefs = [{headerName: 'Make', поле: 'make', сортируемый: true, фильтр: true}, {headerName: 'Model', поле: 'model', сортируемый: true, фильтр: true}, {headerName: 'Price', поле: 'цена', сортируемый: true, фильтр: true}];

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

Выбрать удаленные данные

Отображение жестко закодированных данных в JavaScript не поможет нам продвинуться далеко вперед. В реальном мире большую часть времени мы имеем дело с данными, которые находятся на удаленном сервере. Благодаря Angular реализовать это на самом деле довольно просто. Обратите внимание, что фактическая выборка данных выполняется за пределами компонента сетки - мы используем Angular's HttpClient и асинхронная труба. В качестве первого шага давайте добавим HttpModule в наш модуль приложения:

импортировать {BrowserModule} из '@ angular / platform-browser'; импортировать {NgModule} из '@ angular / core'; import {AppComponent} из './app.component'; импортировать {AgGridModule} из 'ag-grid-angular'; импортировать {HttpClientModule} из '@ angular / common / http'; @NgModule ({объявлений: [AppComponent], импорт: [BrowserModule, HttpClientModule, AgGridModule.withComponents ([])], провайдеры: [], начальная загрузка: [AppComponent]}) класс экспорта AppModule {}

Теперь давайте удалим жестко запрограммированные данные и получим их с удаленного сервера. Отредактируйте файл src / app.component.ts следующим образом:

import {Component, OnInit} из '@ angular / core'; импортировать {HttpClient} из '@ angular / common / http'; @Component ({selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss']}) класс экспорта AppComponent реализует OnInit {title = 'app' ; columnDefs = [{headerName: 'Make', поле: 'make', сортируемый: true, фильтр: true}, {headerName: 'Model', поле: 'model', сортируемый: true, фильтр: true}, {headerName: 'Price', поле: 'цена', сортируемый: true, фильтр: true}]; rowData: any; конструктор (частный http: HttpClient) {} ngOnInit () {this.rowData = this.http.get ('https://api.myjson.com/bins/15psn9'); }}

Приведенный выше код превращает rowData из жестко запрограммированного массива в Observable. Чтобы сетка работала с ней, нам нужно добавить асинхронный канал в свойство:

<ag-grid-angular style = "ширина: 500 пикселей; высота: 500 пикселей;" class = "ag-theme-balham" [rowData] = "rowData | async" [columnDefs] = "columnDefs"> </ ag-grid-angular>

Удаленные данные такие же, как у нас изначально, поэтому вы не должны замечать никаких реальных изменений в сетке. Однако вы увидите дополнительный HTTP-запрос, если откроете инструменты разработчика.

Включить выбор

Быть программистом - беспокойная работа. Как только мы подумали, что мы выполнили наше задание, появляется менеджер с новым набором требований! Оказалось, что нам нужно разрешить пользователю выбирать определенные строки в сетке и помечать их как помеченные в системе. Мы оставим состояние переключения флага и его сохранение команде бэкэнда. Со своей стороны, мы должны разрешить выбор, а затем получить выбранные записи и передать их с помощью вызова API на удаленную конечную точку службы.

К счастью, вышеуказанная задача довольно проста с ag-Grid. Как вы, возможно, уже догадались, это просто вопрос добавления и изменения нескольких свойств. Сначала отредактируйте src / app.component.ts:

импортировать {Component, OnInit, ViewChild} из '@ angular / core'; импортировать {HttpClient} из '@ angular / common / http'; @Component ({selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss']}) класс экспорта AppComponent реализует OnInit {title = 'app' ; columnDefs = [{headerName: 'make', поле: 'make', sortable: true, filter: true, checkboxSelection: true}, {headerName: 'model', поле: 'model', sortable: true, filter: true} , {headerName: 'цена', поле: 'цена', сортируемый: true, фильтр: true}]; rowData: any; конструктор (частный http: HttpClient) {} ngOnInit () {this.rowData = this.http.get ('https://api.myjson.com/bins/15psn9'); }}

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

<ag-grid-angular style = "ширина: 500 пикселей; высота: 500 пикселей;" class = "ag-theme-balham" [rowData] = "rowData | async" [columnDefs] = "columnDefs" rowSelection = "множественный"> </ ag-grid-angular>

Здесь мы воспользовались сокращением, не связывая значение свойства. Без [] присваивание передаст значение атрибута в виде строки, что хорошо для наших целей.

Большой! Теперь первый столбец содержит флажок, который при щелчке выбирает строку. Единственное, что нам нужно добавить - это кнопка, которая получает выбранные данные и отправляет их на сервер. Для этого мы будем использовать ag-Grid API - мы получим к нему доступ через экземпляр компонента.

<ag-grid-angular #agGrid style = "ширина: 500 пикселей; высота: 500 пикселей;" class = "ag-theme-balham" [rowData] = "rowData | async" [columnDefs] = "columnDefs" rowSelection = "множественный"> </ ag-grid-angular>

Теперь давайте сделаем экземпляр доступным в нашем компоненте:

импортировать {Component, OnInit, ViewChild} из '@ angular / core'; импортировать {HttpClient} из '@ angular / common / http'; import {AgGridNg2} из 'ag-grid-angular'; @Component ({selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss']}) класс экспорта AppComponent реализует OnInit {@ViewChild ('agGrid) ') agGrid: AgGridNg2; title = 'app'; columnDefs = [{headerName: 'Make', поле: 'make', сортируемый: true, фильтр: true, checkboxSelection: true}, {headerName: 'Model', поле: 'model', sortable: true, фильтр: true} , {headerName: 'Price', поле: 'price', сортируемый: true, фильтр: true}]; rowData: any; конструктор (частный http: HttpClient) {} ngOnInit () {this.rowData = this.http.get ('https://api.myjson.com/bins/15psn9'); }}

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

<button (click) = "getSelectedRows ()"> Получить выбранные строки </ button> <ag-grid-angular #agGrid style = "width: 500px; height: 500px;" class = "ag-theme-balham" [rowData] = "rowData | async" [columnDefs] = "columnDefs" rowSelection = "множественный"> </ ag-grid-angular> import {Component, OnInit, ViewChild} из '@ угловая / сердцевина '; импортировать {HttpClient} из '@ angular / common / http'; import {AgGridNg2} из 'ag-grid-angular'; @Component ({selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss']}) класс экспорта AppComponent реализует OnInit {@ViewChild ('agGrid) ') agGrid: AgGridNg2; title = 'app'; columnDefs = [{headerName: 'Make', поле: 'make', сортируемый: true, фильтр: true, checkboxSelection: true}, {headerName: 'Model', поле: 'model', sortable: true, фильтр: true} , {headerName: 'Price', поле: 'price', сортируемый: true, фильтр: true}]; rowData: any; конструктор (частный http: HttpClient) {} ngOnInit () {this.rowData = this.http.get ('https://api.myjson.com/bins/15psn9'); } getSelectedRows () {const selectedNodes = this.agGrid.api.getSelectedNodes (); const selectedData = selectedNodes.map (node ​​=> node.data); const selectedDataStringPresentation = selectedData.map (node ​​=> node.make + '' + node.model) .join (','); alert (`Выбранные узлы: $ {selectedDataStringPresentation}`); }}

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

группирование

Группировка является эксклюзивной функцией ag-Grid Enterprise. Вы можете бесплатно попробовать ag-Grid Enterprise, чтобы узнать, что вы думаете. Вам нужно только связаться, если вы хотите начать использовать ag-Grid Enterprise в проекте, предназначенном для производства.

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

ngOnInit () {- this.rowData = this.http.get ('https://api.myjson.com/bins/15psn9'); + this.rowData = this.http.get ('https://api.myjson.com/bins/ly7d1'); }

После этого давайте включим корпоративные функции ag-grid. Установите дополнительный пакет:

npm install - сохранить ag-grid-enterprise

Затем добавьте импорт в app.module.ts:

импортировать {AgGridModule} из 'ag-grid-angular'; импортировать {HttpClientModule} из '@ angular / common / http'; + импорт «Аг-Грид-Предприятие»;

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

Теперь давайте включим группировку! Добавьте свойство autoGroupColumnDef и измените значение columnDefs на следующее:

Класс экспорта AppComponent реализует OnInit {@ViewChild ('agGrid') agGrid: AgGridNg2; title = 'app'; columnDefs = [{headerName: 'Make', поле: 'make', rowGroup: true}, {headerName: 'Price', поле: 'price'}]; autoGroupColumnDef = {headerName: 'Model', поле: 'model', cellRenderer: 'agGroupCellRenderer', cellRendererParams: {checkbox: true}}; rowData: any; конструктор (частный http: HttpClient) {} ngOnInit () {this.rowData = this.http.get ('https://api.myjson.com/bins/ly7d1'); } getSelectedRows () {const selectedNodes = this.agGrid.api.getSelectedNodes (); const selectedData = selectedNodes.map (node ​​=> node.data); const selectedDataStringPresentation = selectedData.map (node ​​=> node.make + '' + node.model) .join (','); alert (`Выбранные узлы: $ {selectedDataStringPresentation}`); }}

Также добавьте свойство autoGroupColumnDef в шаблон:

class = "ag-theme-balham" + [autoGroupColumnDef] = "autoGroupColumnDef"

Вот и мы! Сетка теперь группирует данные по марке, в то же время перечисляя значение поля модели при расширении. Обратите внимание, что группировка также работает с флажками - свойство groupSelectsChildren добавляет флажок на уровне группы, который выбирает / отменяет выбор всех элементов в группе.

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

Настройте внешний вид темы

Последнее, что мы собираемся сделать, это изменить внешний вид сетки, изменив некоторые переменные Sass темы.

По умолчанию Ag-Grid поставляет набор готовых таблиц стилей темы , Если мы хотим настроить цвета и шрифты темы, мы должны добавить препроцессор Sass в наш проект, переопределить значения переменных темы и ссылаться на файлы ag-grid Sass вместо предварительно созданных таблиц стилей, чтобы переопределения переменных были применяется.

К счастью, Angular CLI сделал большую часть тяжелой работы для нас. Помните, что мы загрузили наш проект с --style scss? Все, что нам нужно сделать сейчас, это изменить пути в src / styles.scss:

@import "../node_modules/ag-grid-community/src/styles/ag-grid.scss"; @import "../node_modules/ag-grid-community/src/styles/ag-theme-balham/sass/ag-theme-balham.scss";

Давайте сделаем что-нибудь попроще, хотя. Мы можем переопределить цвет фона чередующейся строки на серовато-синий. Добавьте следующую строку:

+ $ odd-row-background-color: # CFD8DC;

Если все настроено правильно, второй ряд сетки станет немного темнее. Поздравляем! Теперь вы знаете, что теперь нужно изменить внешний вид сетки на свою волю - есть еще несколько десятков переменных Sass, которые позволяют вам контролировать семейство и размер шрифта, цвет границы, цвет фона заголовка и даже величину интервала в ячейках и столбцах. Полный Список переменных Sass доступно в разделе документации по темам.

Резюме

С этим уроком Angular Grid нам удалось многого добиться. Начиная с скромного начала установки трех строк / столбцов, теперь у нас есть сетка, которая поддерживает сортировку, фильтрацию, привязку к удаленным данным, выбор и даже группировку! При этом мы узнали, как настроить сетку, как получить доступ к ее объекту API и как изменить стили компонента.

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

Следующие шаги

Вы жаждете большего? Направляйтесь к Секция угловых направляющих для более подробной информации об Angular аромате ag-Grid. Чтобы узнать больше о функциях, используемых в этом руководстве, вы можете просмотреть следующие справочные статьи:

Сортировка фильтрация группирование выбор Настройте темы с помощью Sass

Ресурсы угловой сетки


  • Узнайте, как настроить нашу угловую сетку в этом руководство ,

  • Просмотрите наш Угловая сетка страница, чтобы узнать все основные преимущества использования Ag-Grid Angular.

  • Посетите наш блог чтобы открыть все наше угловое содержание.

Похожие

Обзор iPhone 5S
Есть улучшения по всем направлениям. Хотя форм-фактор остался в основном неизменным (скажем, за пару твиков по углам и скошенным краям), все остальное идет в ногу с последними iPhone 6S а также iPhone 6S Plus , Во-первых, есть новейший процессор Apple A9, который вы найдете на обоих флагманских устройствах, что должно значительно повысить производительность.
Обзор рынка фантазийных красочных бриллиантов (2005 - 2015)
FCRF (Фонд исследований цветных фантазий) опубликовал статью, в которой обсуждается рыночная ситуация с Fancy Colourful Diamonds в 2005–2015 гг. FCRF - некоммерческая организация, цель которой - обеспечить прозрачность цен на цветные бриллианты, правила честной торговли и самые высокие правила торговли. этические стандарты на этом рынке. FCRF со своим авторитетом в мире цветных алмазов соответствует авторитету Rapaport в мире бесцветных алмазов. FCRF, среди прочего, смакует, что альтернативный
Что такое хостинг? Как выбрать лучший хостинг?
Цена домена - это не единственная цена, которую мы должны понести, когда начинаем с нашего собственного сайта. Для правильной работы сайта нам также необходимо приобрести хостинг. Как работают планы хостинга? От чего зависит их цена? Что будет работать для нашего сайта или интернет-магазина? Хостинг - что это? Каждый сайт нуждается в подключении к серверу для правильной работы.
WD My Cloud Pro Серия PR4100 NAS Обзор
... выборку случайной производительности 4k со 100% записью и 100% чтением. В этом сценарии My Cloud PR4100 продемонстрировал значительное улучшение модели EX в активности записи с 708 IOPS (хранилище на уровне блоков iSCSI) и 720 IOPS (хранилище на уровне файлов CIFS). При чтении PR4100 дал нам 353 IOPS (iSCSI) и 335 IOPS (CIFS).
Обзор Samsung Galaxy S8
Samsung Galaxy S8 был чем-то совершенно особенным при запуске. Это был телефон, который был непохож на все, что мы видели на рынке. И даже сейчас, спустя почти два года, он по-прежнему потрясающий, особенно для сегодняшнего более низкого ценового сегмента. Экран блестящий - четкий, четкий и предлагает прекрасную цветопередачу, чтобы фильм смотрел сон, и это еще до того, как вы догадались, что у него экран больше, чем у
Обзор Android-приложения Opera Mini 7: более плавный, быстрый и улучшенный браузер для Android
На вашем телефоне Android есть предустановленные приложения, называемые стоковыми. Ваш телефон оснащен стандартной клавиатурой, стандартным приложением камеры и стандартным веб-браузером. Но если на вашем Android-телефоне уже есть необходимые стандартные приложения,
Как установить TOR Browser на USB-накопитель
Теперь, когда Конгресс позволяет вашему интернет-провайдеру продавать вашу личную информацию без вашего разрешения, почти все в Соединенных Штатах говорят о конфиденциальности в Интернете. С такими техническими жаргонными словами, как Виртуальная частная сеть, шифрование и туннелирование, может быть трудно разобраться во всем этом. Независимо от того, профессионал вы или новичок, любой, кто интересуется конфиденциальностью в Интернете, несомненно, слышал о Tor. Столько, сколько «Мистер Робот
Краткая история меню Пуск
Меню Пуск - это серьезный вопрос. Обычно это первое, что приходит на ум, когда мы думаем о Windows и даже о Microsoft. Простое меню существует уже более 20 лет. Его создание было связано с тем, чтобы пользователям было легче ориентироваться в системе, и быстро стало центром повседневного взаимодействия с Windows. Когда мы запускаем приложения и системные функции, мы ищем документы или даже закрываем компьютер - мы используем меню «Пуск» чаще, чем может показаться. Впервые знаменитое
Обзор McAfee Total Protection: надежное антивирусное решение с возможностями для улучшения
... выбор для защиты ПК, и воздействие на ресурсы вашего ПК должно быть минимальным. С ценовыми точками все в порядке, но вы можете найти лучшую цену в другом месте. Настольное приложение McAfee требует небольшой работы, чтобы сделать его более интуитивным и оптимизировать его дизайн. Чтобы прокомментировать эту статью и другой контент PCWorld, посетите наш facebook страница или наш щебет
Перестал работать жесткий диск WD My Passport USB
Внешний накопитель WD My Passport 2 ТБ не работает на телевизоре Samsung. Как восстановить данные? «Здравствуйте, друзья! У меня есть жесткий диск USB WD My Passport 2 ТБ, на котором хранятся различные фильмы, превосходные документы и песни, и он всегда отлично работал на моем ПК. Однако сегодня, когда я пробовал его на телевизоре Samsung для просмотра некоторых фильмов внутри , он просто перестал работать там. И затем, чтобы проверить, полностью ли он поврежден, я просто подключил его
Обзор производительности Sony Xperia X
Не секрет, что Sony в последнее время колеблется, несмотря на то, что ее флагманская линейка Xperia Z впечатляет. Тем не менее, странный цикл выпуска, ценовая стратегия и ограниченная доступность привели к тому, что компания изо всех сил пытается оказать влияние на ультраконкурентный рынок высокого класса. Sony надеется изменить положение вещей с помощью новой серии смартфонов, представленной на MWC 2016 Это означает прозвище Xperia

Комментарии

Какую хостинговую компанию выбрать?
Какую хостинговую компанию выбрать? При выборе хостинговой компании стоит проконсультироваться с пользователями, которые уже пользуются данным сервисом серверной комнаты. В Интернете вы также можете найти рейтинг хостинга, такой как rankinghost.pl - на основе мнений о лучших веб-хостингах на рынке. Стоит почитать отзывы на порталах вроде: opinie.info.pl или просто спросить друзей.
Деревянный, силиконовый, вышитый, войлочный или стеклянный - какой лучше выбрать?
Деревянный, силиконовый, вышитый, войлочный или стеклянный - какой лучше выбрать? Если мы хотим, чтобы стол успешно использовался в течение нескольких лет, стоит позаботиться о подушках кухонного стола. Подушки для специальных задач Независимо от материала, из которого был сделан наш
А как насчет уникальных украшений ручной работы?
А как насчет уникальных украшений ручной работы? ? Личные полотенца и халат Идея кажется банальной? Ничего из этого. Это тривиально, что будет использовано один раз, а потом не будет служить. А полотенца или халат, разумеется, с персонализацией (имена супругов, посвящение жене или дата свадьбы) станут яблочком, напоминая вам об этом торжественном моменте. Гравированные часы
Мы уже помогли вам выбрать устройство Какой Android Wear Smartwatch лучше для вас?
Вы не знаете, какую вазу выбрать? Смотрите отдельную статью , Ваш портрет Вы на картинке в гостиной? Почему нет! Такой уникальный подарок будет радовать ваши глаза (и гостей, посещающих вас) долгие годы. Самый простой способ - подарить хорошему художнику свою картину, чтобы он мог увековечить ваше подобие на бумаге.
Новые цвета означают начало чего-то лучшего?
Новые цвета означают начало чего-то лучшего? Технические параметры Microsoft Lumia 535 Технические характеристики четырехъядерного процессора Qualcomm Snapdragon 200, 1,2 ГГц ОЗУ 1 ГБ Масс-память 8 ГБ Устройство чтения карт памяти MicroSD до 128 ГБ 5-дюймовый qHD-дисплей, IPS LCD, 16 миллионов цветов Разрешение экрана 960 x 540 пикселей Камера 5 миллионов пикселей, F2.4 5-мегапиксельная фронтальная камера Операционная система Windows Phone 8.1 с Lumia Denim GPRS / EDGE / HSDPA
Как выбрать цвет изображения?
Как выбрать цвет изображения? Если мы хотим добавить наше пространство энергии , выбирайте изображения, богатые причудливыми формами, насыщенные насыщенными цветами, если целое требует тонировки - наденьте легкую пастель и спокойную линию. Классическое сочетание черного и белого создаст ощущение гармонии, покоя и свежести. Создайте новый интерьер, добавив больше цвета с помощью изображений, или успокойте кричащие стены с приглушенным мотивом.
Какие современные решения предлагают производители и какие выбрать, чтобы покупка оказалась хитом?
Какие современные решения предлагают производители и какие выбрать, чтобы покупка оказалась хитом? Практические советы ниже. Углы с функцией сна Спальные уголки - отличное предложение для всех, кто часто принимает гостей в своих домах и хочет, чтобы гостиная функционировала как спальня. Это решение также понравится тем, кто имеет ограниченное пространство и не может позволить себе разделить спальню в отдельной комнате. Выбирая раскладной уголок
Как восстановить данные?
Как восстановить данные? «Здравствуйте, друзья! У меня есть жесткий диск USB WD My Passport 2 ТБ, на котором хранятся различные фильмы, превосходные документы и песни, и он всегда отлично работал на моем ПК. Однако сегодня, когда я пробовал его на телевизоре Samsung для просмотра некоторых фильмов внутри , он просто перестал работать там. И затем, чтобы проверить, полностью ли он поврежден, я просто подключил его к своему компьютеру через USB-кабель. Компьютер сообщил, что он проверил на ошибки
Хотите услышать, как лидеры отрасли обсуждают подобные темы и делятся своими примерами использования?
Хотите услышать, как лидеры отрасли обсуждают подобные темы и делятся своими примерами использования? Посетите совмещенный IoT Tech Expo , Блокчейн Экспо , AI & Big Data Expo а также Cyber ​​Security & Cloud Expo World Series с предстоящими событиями в Силиконовой долине, Лондоне и Амстердаме
Во время поиска вы, вероятно, найдете несколько вариантов программного обеспечения и задаетесь вопросом, какие из них выбрать, какой интернет-магазин будет лучшим?
Во время поиска вы, вероятно, найдете несколько вариантов программного обеспечения и задаетесь вопросом, какие из них выбрать, какой интернет-магазин будет лучшим? Платные? Бесплатно? Что искать? Посоветуйте! Очень часто случается, что люди, которые только начинают свое приключение с электронной коммерцией, решают использовать «бесплатные» решения для запуска интернет-магазина и ищут «бесплатный интернет-магазин».
Вопрос в том, какой пакет выбрать?
Вопрос в том, какой пакет выбрать? Читайте дальше, чтобы узнать, что лучше. Бесплатные альтернативы Возможно, самая известная альтернатива - AVG AntiVirus Free. Он обеспечивает бесплатную защиту от вирусов с 1990-х годов, поэтому здесь много родословной. Современный клиент AVG активно обнаруживает и блокирует вирусы в вашей системе, а также интегрируется с вашим браузером, чтобы предупредить вас об известных опасных веб-сайтах. Недавно мы увидели, что общие

Но разве не было бы неплохо иметь возможность сортировать данные, чтобы понять, какой автомобиль является наименее / наиболее дорогим?
Помните, что мы загрузили наш проект с --style scss?
Как выбрать лучший хостинг?
Как работают планы хостинга?
От чего зависит их цена?
Что будет работать для нашего сайта или интернет-магазина?
Хостинг - что это?
Как восстановить данные?
Какую хостинговую компанию выбрать?
Деревянный, силиконовый, вышитый, войлочный или стеклянный - какой лучше выбрать?