компонент ионной метки внутри шаблона трафарета-компонента-стартера не отображается - PullRequest
0 голосов
/ 26 августа 2018

Я клонировал stencil-component-starter из:

https://github.com/ionic-team/stencil-component-starter

Затем в файле: my-component.tsx У меня есть следующий код:

import { Component, Prop } from '@stencil/core';

@Component({
  tag: 'my-component',
  styleUrl: 'my-component.css',
  shadow: true
})
export class MyComponent {

  @Prop() first: string;
  @Prop() last: string;
  @Prop() minHeartRate: number;
  @Prop() maxHeartRate: number;

  render() {
    return (
      <div>
        Athlete: {this.first} {this.last} - Heart Rate Range:
        <ion-range mode="ios" dualKnobs={true} min={0} max={200} step={2} pin={true} snaps={true} value={{lower: this.minHeartRate, upper: this.maxHeartRate}}>
          <ion-label range-left>0</ion-label>
          <ion-label range-right>200</ion-label>
        </ion-range>
      </div>
    );
  }
}

какВы можете увидеть здесь:

https://github.com/napolev/stencil-ion-range/blob/master/src/components/my-component/my-component.tsx

[До того] Он корректно обрабатывался почти с двумя проблемами 1 and 2: [Сейчас] Он вообще не рендерится.Итак, есть три проблемы 1, 2 and 3:

  1. Теги <ion-label/> игнорируются.

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

  3. Это новая проблема, которую я только что обнаружил (Current time: 2018-08-26 19:20).Как и 12 часов назад (проверьте отметку времени в репо), репозиторий: https://github.com/napolev/stencil-ion-range/ при коммите 12c14b75cca92f19af6c5ccae60091319578cec7 генерировал почти должным образом тег <ion-range/> выше, за исключением проблем 1 и 2 (проверьте изображениениже).Но теперь, после чистой установки этого репозитория, он больше не отображает то, что вы видите на изображении ниже.Это странноПосле выполнения этого коммита я проверил, что после чистой установки он рендерит.

Вот что он рендерил раньше, что он больше не рендерится:

enter image description here

Ссылка:

https://ionicframework.com/docs/api/components/range/Range/

Есть идеи, как решить эту проблему?

Спасибо!

[EDIT 1]

Это ответ на комментарий Аарона Сандерса ниже:

ion-labelкомпонент внутри stencil-component-starter не обрабатывается

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

https://github.com/napolev/stencil-ion-range/commit/d3471825131d3d329901c73d8c6803a609b27c3b#diff-34c2a6c626ee2612cd4f12b2c004a0b1L16

, нопри запуске кода с помощью: $ npm start вот что визуализируется:

enter image description here

правильно ли вы визуализировали компонент?

Я удалил каталог node_modules и снова установил их безуспешно.

Не могли бы вы попробовать мой репозиторий?

, как вы видите, я сделал всего 2 коммитаповерх официальных коммитов:

https://github.com/napolev/stencil-ion-range/commits/master

На всякий случай вот версии, которые я использую для основных инструментов:

$ node -v
v8.11.2

$ npm -v
6.1.0

$ ionic -v
ionic CLI 4.1.1

[РЕДАКТИРОВАТЬ 2]

Параллельно обсуждается эта тема:

https://forum.ionicframework.com/t/ion-label-component-inside-the-stencil-component-starter-not-getting-rendered/139763

[РЕДАКТИРОВАТЬ 3]

Это ответ на комментарий от Александра Старосельского ниже:

компонент ионной метки внутри шаблона трафарета-компонента не запускается

Александр, я попробовал ваше предложение со следующими изменениями:

https://github.com/napolev/stencil-ion-range/commit/68fce2abe25536b657f9493beb1cc56e26828e4f

Теперь компонент <ion-range/> визуализируется (это действительно хорошо), но есть некоторая проблема срендеринг, как вы можете видеть на следующем изображении.Компоненты <ion-label/> имеют большую ширину.

enter image description here

Есть идеи о том, как решить эту проблему?

Спасибо!

[РЕДАКТИРОВАТЬ 4]

Добавление предложения от Аарон Сондерс добивается цели:

<ion-item>
    <ion-range
        mode="ios"
        dualKnobs={true}
        min={0} max={200} step={2}
        pin={true} snaps={true}
        value={{ lower: this.minHeartRate, upper: this.maxHeartRate }}
    >
        <ion-label slot="start" style={{flex: 'none', margin: '0 30px 0 0'}}>0</ion-label>
        <ion-label slot="end" style={{flex: 'none', padding:' 0 0 0 30px'}}>200</ion-label>
    </ion-range>
</ion-item>

Благодаря АлександруСтаросельский и Аарон Сондерс потому что, объединив их предложения, я смог бы получить эту работу.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Вам необходимо явно указать import '@ionic/core'; в компоненте *1002* stencil-component-starter * или добавить сценарии / стили CDN в index.html.Я помню, в какой-то момент либо инструментарий, либо stencil-app-starter специально имели этот импорт в корневом элементе с более ранней версией @ ionic / core beta или даже с альфа-версией.

Кроме того, для документации, вам также нужно обернуть ion-range с ion-item, а также использовать slot="start" и slot="end" вместо range-left и range-right.

import { Component, Prop } from '@stencil/core';
import '@ionic/core';

@Component({
  tag: 'my-component',
  styleUrl: 'my-component.css',
  shadow: true
})
export class MyComponent {

  @Prop() first: string;
  @Prop() last: string;
  @Prop() minHeartRate: number;
  @Prop() maxHeartRate: number;

  render() {
    return (
      <div>
        Athlete: {this.first} {this.last} - Heart Rate Range:
        <ion-item>
          <ion-range mode="ios" dualKnobs={true} min={0} max={200} step={2} pin={true} snaps={true} value={{lower: this.minHeartRate, upper: this.maxHeartRate}}>
            <ion-label slot="start">0</ion-label>
            <ion-label slot="end">200</ion-label>
          </ion-range>
        </ion-item>
      </div>
    );
  }
}

Это будетпомогите убедиться, что стили введены и компонент отображается правильно.Справедливости ради, когда я попробовал это, большинство стилей было выполнено, но были определенные проблемы с позиционированием элементов с прорезями ion-label.Определенно необходимо внести некоторые коррективы в стиль, включая flex растут / сжимаются / основание, а также позиционирование / отступ элемента концевого паза.Вероятно, целесообразно также сообщить о проблемах стиля в @ ionic / core github.

Надеюсь, это поможет!

0 голосов
/ 28 августа 2018

, основанный на последней бета-версии 4.0 ... Я все еще думаю, что в стилизации надписей по умолчанию есть ошибка, но это обходной путь

ссылка на документ, так как трафарет использует ionicv4 - https://beta.ionicframework.com/docs/api/range

<ion-range mode="ios" 
           dualKnobs={true} 
           min={0} max={200} 
           step={2} pin={true} 
           snaps={true} 
           value={{lower: 89, upper: 150}}>
   <ion-label slot="start" style={{flex: 'none',padding:'10px'}}>0</ion-label>
   <ion-label slot="end" style={{flex: 'none',padding:'10px'}}>200</ion-label>
</ion-range>

enter image description here

...