►
From YouTube: XAF Blazor Reusable Modules
Description
Click Here to Subscribe: http://xaf.life/35
Websites:
https://xafmarin.com/
https://xari.io
https://www.xafers.training/
http://xafersweekly.com/
Facebook Group
http://xaf.life/4g
Free XAF Support Hour
https://calendly.com/xari/free-xaf-support-hour
A
When
I
was
starting
to
to
like
when
I
met
javier
a
long
time
ago,
the
first
time,
the
first
or
second
time
that
we
talked,
we
were
discussing
how
to
create
a
usable
module
for
stuff,
and
I
asked
developer
express
many
times
before,
like
when
stuff
was
just
starting,
maybe
the
first
year
how
you
create
a
reusable
modules
as
they
do
it.
They
told
me
like,
go
and
check
the
reports
mode.
That's
the
best
implementation
that
we
have.
A
That
shows
how
to
do
it
and
a
few
days
ago
I
was
doing
the
same,
because
there
is
the
framework
that
I'm
handling
the
ultra
modules.
We
use
it
mostly
internal
and
international
projects,
but
I
want
to
to
take
that
to
rotate
that
project
again.
So
basically,
I
asked
them
okay,
how
do
we
how
we
should
do,
how
we
should
make
a
reusable
module
for
blazer,
which
is
a
different
trick?
Actually
so
so
far,
you
know
that
well,
top
laser
applications
are
regular
applications
in
general,
so
in
any
blazer
application.
A
A
But
this
is
tricky
because
if
you
want
to
make
a
reusable
sub
blazer
module,
okay,
you.
If
what
will
happen,
if
you
put
the
css
file
here
and
the
reusable
module
is
actually
here,
it
means
that
you
will
need
to
add
the
commentations
to
tell
it
so.
Okay
download
this
file,
put
it
on
www
folder,
then
add
the
reference
to
the
to
the
in
the
host
file
and
that's
a
lot
of
work.
A
This
is
for
the
this
one
and
anatol
was
kind
enough
to
just
tell
me,
like
okay
go
and
check
these
modules.
We
do
the
things
that
you
want
to
do
there,
and
I
think
this
is
public.
Yes,
I
think
it
is
because
I'm
not
signing
in
this
browser,
so
anyone
can
see
it.
If
you
want
to
see
the
what
we
were
talking
about.
That's
the
support
ticket.
A
A
And
I
will
just
add
some
javascript
to
it,
so
it
will
make
sense,
because
the
main
problem
is
when
you
want
to
add
some
other
files
like
javascript
and
css
file
and
ship
them,
with
your
with
your
sas
place
or
module.
So
the
trick
here
is
the
following:
let's
open,
which
one
I
was
using
this
morning,
maybe
it's
in
the
other
studio
yeah
it's
this
one.
A
A
For
example,
in
the
last
stand
up,
I
show
the
form
editor
that
we
have
the
online
form
editor
and
the
skip
editor
that
we
have
also-
and
that
is
using
monaco,
and
I
use
it
in
like
10
different
personal
applications.
I
have
that
I
made
for
my
mom
for
my
brother
for
friends,
sometimes
or
experiments,
and
I
was
like
tired
of
okay
like
every
time.
I
need
to
make
a
new
application
to
add
a
reference
to
the
host
file
to
copy
the
galaxy
that
I
need
the
css
file
that
I
need.
A
That's
why
I
ask
developer
express
how
do
I
do?
How
do
I
make
a
reusable
soft
place
or
application,
so
they
show
me
the
trick.
A
A
A
It's
so
simple:
that
is
just
this.
We
will
just
create
a
javascript
that
says
hello,
and
this
will
say
like
hello
from
component
and
of
course
you
can
go
really
crazy
there,
especially
if
you're
integrating
their
extreme
components.
Maybe
the
scheduler,
for
example,
as
they've
said,
is
not
yet
there.
A
But
if
you
want
to
include
javascript
example,
most
of
the
javascript
components
they
work
in
one
way,
you
add
an
html
tag
and
then
you
run
a
script
and
it's
the
sorry
a
javascript.
So
you
can
initialize
that
component
and
they
also
do
something
to
render
something
different,
for
example,
a
drawing
canvas,
a
control.
You
know
you
name
it
that's
how
javascript
components
work
in
general,
you
set
a
tag
with
an
id,
and
then
you
run
a
javascript
over
that
type,
an
id.
A
A
A
And
this
replaces
what
I
have
so
here.
There
are
a
few
things
that
you
need
to
notice.
There
are
a
lot
of
namespace
missing.
A
So
I
have
one
file
that
is
called
the
tag
helper.
This
is
the
most
important
one.
Actually,
basically,
what
you
do
with
this
type
helper
is
something
super
useful
is
that
you
can
add
them
as
service
and
your
startup
and
whatever
you
do
whatever
it
is
in
here,
it
will
modify
the
html
of
your
host
file.
So
basically,
the
idea
here
is
that
we
will
add
this
line
instead
of
modifying
or
host
file.
Every
time
we
will
create
an
extension
that
modified
it
for
us
and
then
we
will
add
it
to
the
services.
A
A
So
this
is
basically
somehow
like
middleware.
This
will
execute
before
the
page
finish
loading,
and
it
will
add
these
tags
that
we
just
created
here.
So
in
these
tasks,
usually
you
add
reference
to
javascript
files
or
css
files,
so
you
don't
have
to
ask
the
person
okay,
go
and
paste
this
in
your
in
your
host
file,
so
also
the
the
trick
here.
There
are
a
few
things
that
you
need
to
notice
here
when
we
use
quotes
instead
of
using
simple
quotes,
we
have
to
use
double
quotes
to
escape
it.
A
A
And
just
put
it
here:
okay,
so
usually
when
you
modify
your
host
file,
if
we
go
here-
and
here
let's
see-
maybe
I
can
find
one
see
when
isa
when
the
reference
comes
from
a
reference
assembly,
you
use
underscore
content
and
then
the
namespace
or
the
name
of
your
assembly
and
then
the
name
of
the
file
in
the
opposite
case.
This
is
a
reference
to
a
physical
file,
so
just
telling
this
like
it
started
in
www
roots
and
after
that
is
the
css
folder
and
then
type
css.
A
So
that's
actually
here
so
how
you
set
the
route
or
embedded
resources
and
for
physical
resources
are
a
little
bit
different
like
and
better
resources.
You
have
to
use
underscore
content
at
the
beginning,
sorry,
and
in
better
resources
you
have
to
use
the
physical
path
in
general.
So
let's
go
back
to
the
stack
helper.
So
let's
get.
A
A
So
what
this
means
is
that
this
tag
is
going
to
be
added
to
the
header
and
the
location
will
be
the
embed
resource
within
this
route
and
this
route
ends
up
in
this
www
folder
I
mean
content
and
the
name
of
your
assembly
means
that
whatever
is
in
the
root
here
will
be
used.
So
that's
why
we
specify
this
name
no
folder,
but
if
I
want
I
can
create
a
folder
here.
A
But
here
we
have
to
add
that
to
the
path,
so
this
would
be
yes,
also,
okay,
so
far
so
good.
This
will
include
the
javascript
in
general.
So
then
we
need
to
go
back
and
check
the
extension.
So
here
I
will
rename
the
file.
A
And,
as
you
can
see,
this
is
basically
is
any
it's
like
doesn't
have
anything
special.
It's
an
extension
class
extension
class
is
how
you
add
methods
to
a
compile
like
classes
that
can
already
compile.
Basically,
this
has
nothing
to
do
with
with
south
or
with
blazer
itself.
It's
something
that
came
in
csr3
with
official
3.5
with
the
inclusion
of
link,
basically
because
we
need
to
add
more
extensions
to
the
enumerable,
for
example,
add
more
methods.
A
So
basically,
this
tension
is
really
simple.
Is
we
add
a
method?
Name
add
my
blazer
module.
You
can
name
it
as
you
want,
so
I
will
name
it
differently
in
this
case,.
A
A
A
And
here
in
the
startup
class,
we
need
to
add
the
execute
that
method.
So
I
want
you
to
notice
something
when
you
do
a
extension
for
the
I
service
collection.
Now
you
usually
put
it
on
this
namespace,
because
this
name
namespace
is
always
in
the
startup
file.
So
you
will
have
the
extensions
available.
A
If
not,
you
will
need
to
import
the
namespace
of
this
class,
so
this
method
shows.
So
the
common
pattern
is
that
you
put
it
in
a
different
instance.
This
is
not
the
name
space
of
my
application,
you
put
it
in
a
different
one
and
what
that
is
already
there.
So
people
don't
have
to
figure
it
out
that
there
is
extension
that
they
need
to
load
and
they
need
to
add
a
name
space
in
the
top
and
let's
go
and
execute
this,
so
I
will
go.
A
A
A
A
Open
this,
so
we
know
that
in
the
end
we
have
the
the
partial
class
that
is
part
of
the
component,
so
there
we
can
basically
do
an
override
of
the
uninitialized
methods,
and
since
I
copied
this
code,
this
is
not
the
name
of
the
function
is
not
resize.
The
name
of
the
function
is
hello
from
components.
A
And
there
is
one
one
one
more
thing
that
I
need.
Oh,
this
is
wrong.
I
love
that
code
rush.
You
have
this
feature
like
intelligence,
I
mean
sorry,
it's
still
checking
so.
A
Sorry
guys
for
that
I
was
receiving
a
phone
call
and
my
phone
was
far
away.
So,
okay,
let's
go
back
to
this,
so
this
is
the
function
that
we
want
to
invoke
and
we're
still
missing
some
small
stuff
here.
So
let
me
close
this
okay.
So
far,
so
good
right,
let's
go
to
the
properties
here,
we're
missing
just
one
thing:
we
need
the
javascript
interrupt.
We
need
to
inject
the
javascript
interop,
so
we
can
call
a
javascript
function
from
from
our
component.
A
A
So
sometimes
you
have
to
format
by
hand.
Okay!
So
far,
so
good,
let's
see
here,
this
should
be
okay,
it's
working,
so
we
have
the
reference
to
the
javascript
interrupt.
So
basically,
when
this
propertyator
renders
the
component,
it
will
also
call
this
javascript
function
that
you
can
use.
For
example,
that's
how
you
use
it
in
google
maps
will
map
the
ask
to
add
this
to
other
tasks
with
an
id
and
then
run
a
javascript
that
initialize
the
the
rendering
of
the
map.
A
A
So
if
everything
is
correct,
it
means
that
when
I
open
the
detail
view,
it
will
render
my
property
editor
and
the
propagator
will
execute
these
javascript
codes.
And
the
beauty
of
this
is
that
in
our
application
we
don't
have
any.
We
didn't
add
any
extra
files
and
we
didn't
have
to
modify
also
the
host
page.
A
A
A
So
part
of
that
is
basically
inject
those
messages
inside
of
the
messages
that
you
want
to
include,
maybe
in
your
property
editor
or
in
your
custom
components,
you
need
to
include
them
in
the
model,
so
they
will
be
localized
and
you
look
like
all
the
other
parts
of
your
application.
A
A
A
Demo,
what
is
so
I
need
to
modify
here.
I
think
that's
it.
Basically,
I
just
need
to
use
that
in
the
in
the
module,
so
I'm
doing
a
lot
of
copy
and
paste
today,
let's
see
where
do
we
add
that.
A
Oh,
I
have
this
class,
I
want
to
just
rename
it.
I
hate
to
see
those
class
one
okay.
So
far,
so
good,
let's
go
to
the
module
class,
and
here
we
just
need
to
add
another
overwrite,
and
we
need
to
tell
it.
Okay,
like
include
also
this
node
generator
updater.
A
A
So
here
in
the
localization
node
we'll
have
another
nazi
demo
standard
and
the
message
that
we
have
that
we
just
create
is
there
so
this
checks?
When
you
create
a
different
version
like
in
the
spanish,
you
will
be
able
to
localize
those
messages.
A
So
now
the
next
thing
that
I
need:
andy's
back
and
muted
you're,
muted
yeah.
Sorry
for
that
guys,
I'm
saying
thanks
to
cover
me
dave.
So
let
me
just
share
my
skin
again.
A
Because
we're
about
to
finish-
and
this
is
becoming
really
interesting-
okay,
so
we
have
the
message
so
we
we
are
able
to
localize
our
message.
If
we
achieve
module
in
different
languages
now
we
just
need
to
use
that
message
somewhere.
So
it
makes
sense
right.
A
A
Then
the
name
of
the
subnode
and
the
default
text,
so
we
will
name
this
default
text.
So
if
the
if
sub,
doesn't
find
this
in
the
in
the
localization
node,
it
will
show
this
default
text.
Otherwise
it
will
go
and
look
for
this
node
and
this
this
subnode
to
get
the
text.
So
the
nodes
are
demo
standard.
A
A
Model
node
generator
updated.
This
is
also
really
explicit
class.
So
I
guess
I
someone
like
me
using
developer,
express
okay.
So
far
so
good.
I
was
seeing
like
an
exception
here.
Sometimes
you
see
this,
but
we
just
need
to
compile
it.
I
guess
before
we
run
it
and
that's
not
an
error
actually
or
should
not
be
an
error.
A
What
it
is,
let's
see
we
need
to
import
a
namespace.
I
guess
yes,
so
let's
go
for
fingers!
Everyone,
please
close
the
your
fingers.
I
want
this
to
to
work
the
first
time
and
again
I
never
felt.
Let's
see
what's
happening,
I
think
if
you
import
the
namespace
in
the
end,
no,
it
didn't.
So
that's
what
I
don't
like
about
razer
components.
Sometimes
this
stuff-
they
just
don't
happen
at
all
see
so
we
try
to
use
the
full
and
now
it
should
work.
A
A
So,
let's
just
in
case
update
model
in
all
projects.
A
A
Yeah,
yes,
that
so
I
will
just
update
this
one
more
time
just
in
case,
but
basically
when
you
execute
that
what's
happening
is
that
it
will
go
through
the
modules
and
cascade
down
the
the
changes.
So
just
let's
close
all
of
this-
and
I
will
just
double
check
the
the
model
before
we
start
again
so.
A
A
Here
we
have
our
javascript
method
and
the
text
that
we
just
inject
in
the
in
the
model,
so
basically
that
those
are
all
the
steps
that
you
need
to
do
to
create
a
reusable
module
in
general
and
the
last
one
this
one.
Basically,
you
just
need
to
package
a
nougat
package
if
you
want-
and
you
can
just
use
that
nugget
package
everywhere
or
anywhere-
and
basically
you
just
do
this
and
let's
see
when
you
execute
the
net
publish,
you
will
create
a
nougat
package
and
these
options
are
a
little
bit
different.
A
A
A
So
you
can
you're
ready
to
distribute
this
package
to
to
someone
else
or
put
it
in
know
it
dot
already
so
see
those
are
all
the
requirements
and
inside.
A
So
when
you
use
this
in
a
different
application
like
in
in
a
new
application,
for
example,
you
will
have
your
property
of
the
the
javascript
that
your
property
ether
uses
and
the
only
thing
that
you
will
need
to
do.
It
will
become
just
one
line
to
go
to
the
startup
of
that
new
application
and
invoke
the
extension
that
we
create
to
add
the
tags
to
the
host
page.
A
So
that's
basically
it.
I
think
that
they
make
a
great
job
with
the
tag
helpers,
because
you
can
pack
everything
in
just
one
assembly
and
redistribute
it
everywhere.
We
do
that
really
often
in
here
in
the
office,
and
if
there
is
any
questions,
you're
free
to
open
your
mic
or
send
it
in
the
chat.